当我的测试在Eclipse中扩展TestCase(Junit)时,无法使用@Test注释执行测试
当我没有从TestCase(jUnit)扩展时它工作正常,但我现有的代码从TestCase扩展,因此我想保持原样。
答案 0 :(得分:4)
检查您是否使用了JUnit3 runner。
打开“运行配置”进行测试,并在Test
标签上确保为您的测试运行者选择了JUnit 4
。
恕我直言,如果您正在为JUnit4改装测试套件,只需删除对JUnit3的支持。
顺便说一句,如果你切换到'JUnit 4'跑步者,它仍然会执行旧的JUnit3类(你不必为它们添加@Test注释)。
答案 1 :(得分:4)
扩展junit.framework
的测试。 TestCase被JUnit4运行者认为是JUnit3风格的测试。这是正确的。
要@Test注释,您需要不扩展junit.framework
。 TestCase和@Test注释工作正常
答案 2 :(得分:2)
扩展junit.framework.TestCase
的测试被JUnit4运行程序视为JUnit3样式的测试。有关详情,请参阅the source code了解AllDefaultPossibilitiesBuilder
。
您可以通过使用TestCase
注释类来强制JUnit4将扩展@RunWith(JUnit4.class)
的类视为JUnit4样式的测试,但您几乎肯定不希望这样做。如果这样做,您的测试类仍将继承junit.framework.TestCase
中的所有方法,但不会调用这些方法。换句话说,你会继承很多东西。
即使在测试中,继承也常常是一种分享代码的糟糕方式。如果可以将共享代码放在另一个类中并直接从测试类委托,那就这样做。
如果您使用JUnit 4.7或更高版本,Rules提供了另一种共享代码的方法。规则可能会受到影响或可能影响测试的行为。
在极少数情况下,多个JUnit4测试类所需的共享代码可以在Runner中共享,但由于测试类只能指定一个运行器,因此运行器具有许多与基类相同的缺点。