1

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

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

4

3 回答 3

4

检查您没有使用 JUnit3 运行器。

为您的测试打开“运行配置”,并在Test选项卡上确保您已JUnit 4选择测试运行器。

恕我直言,如果您正在为 JUnit4 改造测试套件,只需放弃对 JUnit3 的支持。

顺便说一句,如果您切换到“JUnit 4”运行器,它仍将执行旧的 JUnit3 类(您不必向它们添加 @Test 注释)。

于 2009-11-02T14:39:44.307 回答
4

扩展的测试junit.framework。TestCase 被 JUnit4 运行器认为是 JUnit3 风格的测试。这是对的。

要 @Test 注释,您不需要扩展junit.framework. TestCase 和 @Test 注释工作正常

于 2012-10-25T07:01:07.390 回答
2

扩展junit.framework.TestCase的测试被 JUnit4 运行器认为是 JUnit3 风格的测试。有关更多详细信息,请参阅源代码AllDefaultPossibilitiesBuilder

您可以强制 JUnit4 将扩展的类TestCase视为 JUnit4 样式的测试,方法是使用注释类,@RunWith(JUnit4.class)但您几乎肯定不想这样做。如果您这样做,您的测试类仍将继承所有方法,junit.framework.TestCase但不会调用这些方法。换句话说,你会继承很多垃圾。

继承通常是共享代码的一种糟糕方式,即使在测试中也是如此。如果可以将共享代码放在另一个类中并直接从测试类中委托,那么就这样做。

如果您使用 JUnit 4.7 或更高版本,规则提供了另一种共享代码的方式。规则可能会受到或可能影响测试的行为。

在极少数情况下,多个 JUnit4 测试类所需的共享代码可以在一个 Runner 中共享,但由于一个测试类只能指定一个运行器,因此运行器与基类有许多相同的缺点。

于 2010-07-19T04:07:36.883 回答