为什么Junit仍允许类扩展TestCase来使用注释@Test?

时间:2013-08-13 18:21:31

标签: junit

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

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

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

1 个答案:

答案 0 :(得分:5)

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

如果您扩展TestCase并使用Junit 3 Test跑步者,那么您的测试方法名称需要以" test"开头。 (Junit 3测试运行器使用Java反射来查找和调用所有以单词&#34开头的方法;测试")

依赖于TestClass阻碍了测试类的设计,因为你被迫扩展了那个使得某些东西难以测试的类。还没有任何东西等同于Junit4的@BeforeClass或@AfterClass,这意味着你必须完成所有更复杂的多测试夹具设置并自行拆除。

要一次运行许多Junit4测试类作为Test Suite,您可以使用@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{

}
相关问题