当我的测试在 Eclipse 中扩展 TestCase(Junit) 时,无法使用 @Test 注释执行测试
当我不从 TestCase(jUnit) 扩展时,它工作正常,但我现有的代码从 TestCase 扩展,因此我想保持原样。
检查您没有使用 JUnit3 运行器。
为您的测试打开“运行配置”,并在Test
选项卡上确保您已JUnit 4
选择测试运行器。
恕我直言,如果您正在为 JUnit4 改造测试套件,只需放弃对 JUnit3 的支持。
顺便说一句,如果您切换到“JUnit 4”运行器,它仍将执行旧的 JUnit3 类(您不必向它们添加 @Test 注释)。
扩展的测试junit.framework
。TestCase 被 JUnit4 运行器认为是 JUnit3 风格的测试。这是对的。
要 @Test 注释,您不需要扩展junit.framework
. TestCase 和 @Test 注释工作正常
扩展junit.framework.TestCase
的测试被 JUnit4 运行器认为是 JUnit3 风格的测试。有关更多详细信息,请参阅源代码AllDefaultPossibilitiesBuilder
。
您可以强制 JUnit4 将扩展的类TestCase
视为 JUnit4 样式的测试,方法是使用注释类,@RunWith(JUnit4.class)
但您几乎肯定不想这样做。如果您这样做,您的测试类仍将继承所有方法,junit.framework.TestCase
但不会调用这些方法。换句话说,你会继承很多垃圾。
继承通常是共享代码的一种糟糕方式,即使在测试中也是如此。如果可以将共享代码放在另一个类中并直接从测试类中委托,那么就这样做。
如果您使用 JUnit 4.7 或更高版本,规则提供了另一种共享代码的方式。规则可能会受到或可能影响测试的行为。
在极少数情况下,多个 JUnit4 测试类所需的共享代码可以在一个 Runner 中共享,但由于一个测试类只能指定一个运行器,因此运行器与基类有许多相同的缺点。