当我的测试在Eclipse中扩展TestCase(Junit)时,无法使用@Test注释执行测试

时间:2009-11-02 14:30:01

标签: eclipse junit4

当我的测试在Eclipse中扩展TestCase(Junit)时,无法使用@Test注释执行测试

当我没有从TestCase(jUnit)扩展时它工作正常,但我现有的代码从TestCase扩展,因此我想保持原样。

3 个答案:

答案 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中共享,但由于测试类只能指定一个运行器,因此运行器具有许多与基类相同的缺点。