测试套包含一个或多个需要被一起执行的测试用例或测试套。
测试套需要在类名前加@RunWith(Suite.class) 表示不使用默认的测试运行器,使用指定的测试运行器,在这里Suite.class就是指定的测试运行器。并用@Suite.SuiteClasses指定该测试套包含的其他测试用例或测试套。
需要注意的是,不要出现测试套循环嵌套的情况。否则,你就等着执行不完的测试用例吧。Junit4提供的默认测试运行器,在执行时发现自嵌套, 会产生initializationError,提示测试套自包含了,或间接自包含了。
测试套中的tearUp和tearDown。
执行测试套时,不会实例化测试套类。
测试套类中的
@BeforeClass 修饰一个公有无参数无返回值的类方法(public | void | no parameters | static),在执行测试套的第一个测试类或测试套之前调用。
@AfterClass 修饰一个公有无参数无返回值的类方法(public | void | no parameters | static),在执行完测试套的最后一个测试类或测试套之后调用。
同样不推荐测试类有多个@ BeforeClass,多个@AfterClass。
小结,执行测试套时的方法调用顺序。
[list=1]
[*]TestSuite的@BeforeClass
[*]TestCase的@BeforeClass
[*]TestCase的构造方法。
[*]TestCase的@Before
[*]TestCase的@Test
[*]TestCase的@After
[*]TestCase的@AfterClass
[*]TestSuite的@AfterClass
[/list]
测试套需要在类名前加@RunWith(Suite.class) 表示不使用默认的测试运行器,使用指定的测试运行器,在这里Suite.class就是指定的测试运行器。并用@Suite.SuiteClasses指定该测试套包含的其他测试用例或测试套。
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
MyTestCase.class, //测试类
PartSuite.class, //另一个测试套
})
public class AllTestCases {
}
需要注意的是,不要出现测试套循环嵌套的情况。否则,你就等着执行不完的测试用例吧。Junit4提供的默认测试运行器,在执行时发现自嵌套, 会产生initializationError,提示测试套自包含了,或间接自包含了。
测试套中的tearUp和tearDown。
执行测试套时,不会实例化测试套类。
测试套类中的
@BeforeClass 修饰一个公有无参数无返回值的类方法(public | void | no parameters | static),在执行测试套的第一个测试类或测试套之前调用。
@AfterClass 修饰一个公有无参数无返回值的类方法(public | void | no parameters | static),在执行完测试套的最后一个测试类或测试套之后调用。
同样不推荐测试类有多个@ BeforeClass,多个@AfterClass。
小结,执行测试套时的方法调用顺序。
[list=1]
[*]TestSuite的@BeforeClass
[*]TestCase的@BeforeClass
[*]TestCase的构造方法。
[*]TestCase的@Before
[*]TestCase的@Test
[*]TestCase的@After
[*]TestCase的@AfterClass
[*]TestSuite的@AfterClass
[/list]