JUnit 预期标记未按预期工作

2022-09-01 00:22:42

我在 eclipse 中有以下测试用例,使用拒绝通过的 JUnit 4。可能出了什么问题?

@Test(expected = IllegalArgumentException.class)
public void testIAE() {
    throw new IllegalArgumentException();
}

这个确切的测试用例是在尝试使用预期标记测试我自己的代码不起作用时出现的。我想看看JUnit是否会通过最基本的测试。但事实并非如此。

我还按照预期进行了自定义异常测试,但没有运气。

截图: Screenshot


答案 1

问题是你的 AnnounceThreadTest 扩展了 TestCase。因为它扩展了 TestCase,所以 JUnit Runner 将其视为 JUnit 3.8 测试,并且测试之所以运行,是因为它以单词 test 开头,从而隐藏了@Test注释实际上根本没有被使用的事实。

若要解决此问题,请从类定义中删除“扩展 TestCase”。


答案 2

刚刚使用JUnit 4.4在IntelliJ中运行了这个:

   @Test(expected = IllegalArgumentException.class)
   public void testExpected()
   {
       throw new IllegalArgumentException();
   }

完美通过。

重新生成整个项目,然后重试。你做错了别的事情。JUnit 4.4 正在按广告宣传的方式工作。


推荐