JUnit期望标记不按预期工作

时间:2009-07-19 23:56:35

标签: java unit-testing junit junit4

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

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

当尝试使用期望的标记测试我自己的代码时,这个确切的测试用例出现了。我想看看JUnit是否会通过最基本的测试。它没有。

我还测试了自定义异常,没有运气。

截图: Screenshot

3 个答案:

答案 0 :(得分:79)

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

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

答案 1 :(得分:2)

使用JUnit 4.4在IntelliJ中运行它:

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

顺利通过。

重建整个项目,然后重试。还有别的事你做错了。 JUnit 4.4正如宣传的那样工作。

答案 2 :(得分:2)

您可以使用支持注释的Junit4来运行测试用例,而不是删除扩展的TestCase。

@RunWith(JUnit4.class)