junit - 为什么Junit仍然允许类扩展TestCase在其中使用注释@Test?

标签 junit

我知道在Junit中,扩展TestCase的类不支持@Before和@After。但它仍然允许使用@Test?

我知道如果没有@Test,如果我们想运行这个类,我们可以重写runTest方法并定义要调用的方法。这不方便。因为如果我们在这个类的方法中标记@Test,就可以直接运行。谁能告诉我如何用@Test调用这个类的方法的机制?

顺便说一句,如果我想将大量测试放入 TestSuite 中,我应该选择一个扩展 TestCase 的类还是使用 @Test 定义一个任意类作为单个测试类?

最佳答案

TestCase 类来自 Junit 3,不应在 Junit 4 + 类中使用。

如果您扩展 TestCase,并使用 Junit 3 测试运行程序,那么您的测试方法名称需要以单词“test”开头。 (Junit 3 测试运行程序使用 Java 反射来查找并调用以“test”一词开头的所有方法)

依赖 TestClass 阻碍了测试类的设计,因为你被迫扩展该类,这使得测试变得困难。也没有任何与 Junit4 的 @BeforeClass 或 @AfterClass 等效的东西,这意味着您必须自己进行所有更复杂的多重测试夹具设置和拆卸。

要作为测试套件同时运行多个 Junit4 测试类,您可以使用 @RunWith 和 @SuiteClasses 注释创建一个新的空类,如下所示:

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses(
{
   TestClassA.class,
   TestClassB.class

}
)

public class MyTestSuite{

}

关于junit - 为什么Junit仍然允许类扩展TestCase在其中使用注释@Test?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216388/

相关文章:

java - Mockito:无需强制转换即可验证参数

java - 如何测试 protected 方法

java - 如何使用断言 (JUnit) 来检查 int?

java - Powermock verifyPrivate 不能与 any() 一起使用

Java - 如何测试一些代码?

java - 使用 Mockito 调用最终类静态方法的模拟对象

android - Junit 输出使用 the-missing-android-xml-junit-test-runner

java - 停止 Jmockit 中的模拟

java - 使用 MockMultipartHttpServletRequest 进行单元测试(在 ItemInputStream.makeAvailable 中抛出 NullPointerException)

java - 我应该在 java 中的方法中使用哪个访问修饰符?