为什么Junit仍然允许类ExtendeTestCase在其中使用注释@Test?

为什么Junit仍然允许类ExtendeTestCase在其中使用注释@Test?,junit,Junit,我知道在Junit中,ExtendeTestCase类不能支持@Before和@After。但它仍然允许使用@Test 我知道没有@Test,如果我们想运行这个类,我们可以重写runTest方法并定义要调用的方法。这不方便。因为如果我们在这个类的方法中标记@Test,它可以直接运行。有人能告诉我关于如何使用@Test调用这个类的方法的机制吗 顺便说一句,如果我想在一个测试套件中放入大量测试,我应该选择一个扩展TestCase的类,还是用@Test定义一个任意类作为单个测试类?TestCase类来

我知道在Junit中,ExtendeTestCase类不能支持@Before和@After。但它仍然允许使用@Test

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


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

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

如果您扩展TestCase,并使用JUnit3测试运行程序,那么您的测试方法名称需要以单词“Test”开头。(JUnit3测试运行程序使用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{

}