Java JUnit预期标记未按预期工作

Java JUnit预期标记未按预期工作,java,unit-testing,junit,junit4,Java,Unit Testing,Junit,Junit4,我在eclipse中有以下测试用例,使用拒绝通过的JUnit4可能有什么问题? @Test(expected = IllegalArgumentException.class) public void testIAE() { throw new IllegalArgumentException(); } 当试图用预期的标记测试我自己的代码时,出现了这个确切的测试用例。我想看看JUnit是否能通过最基本的测试。没有 我还测试了自定义异常,正如预期的那样,没有运气 屏幕截图: 问题在于您的

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

@Test(expected = IllegalArgumentException.class)
public void testIAE() {
    throw new IllegalArgumentException();
}
当试图用预期的标记测试我自己的代码时,出现了这个确切的测试用例。我想看看JUnit是否能通过最基本的测试。没有

我还测试了自定义异常,正如预期的那样,没有运气

屏幕截图:

问题在于您的测试扩展了TestCase。因为它扩展了TestCase,JUnit运行程序将其视为JUnit 3.8测试,而测试之所以运行是因为它以单词test开头,隐藏了@test注释实际上根本没有被使用的事实


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

刚刚使用JUnit 4.4在IntelliJ中运行了此操作:

   @Test(expected = IllegalArgumentException.class)
   public void testExpected()
   {
       throw new IllegalArgumentException();
   }
完美地通过了


重新生成整个项目,然后重试。还有一件事你做错了。JUnit 4.4正在按照广告的方式工作。

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


@RunWith(JUnit4.class)

这一个真的很奇怪,我自己做了一些测试,这段代码运行良好(测试成功)…我添加了一个屏幕截图,只是为了显示。。。我也很怀疑。谢谢你,这就像广告中说的那样修复了它。在删除extends TestCase之后,我不得不添加额外的导入以确保我有静态断言方法。导入静态org.junit.Assert.*;在屏幕截图中找到隐藏为提示的解决方案是一项了不起的工作!!谢谢你,节省了我一些时间。哎呀,我在这个问题上花了一个半小时没有找到答案。谢谢,谢谢,谢谢!!