我有一些自己的组件,我在我的Java应用程序之前开始。大约需要30秒才能开始。在我的集成测试中,我在类和所有测试用例运行之前启动我的组件。我的问题是,是否可以在测试课之前运行我的组件,而不是在整个测试之前?Junit为整个集成测试设置了一次(所有测试类)
亲切的问候, 比拉尔
我有一些自己的组件,我在我的Java应用程序之前开始。大约需要30秒才能开始。在我的集成测试中,我在类和所有测试用例运行之前启动我的组件。我的问题是,是否可以在测试课之前运行我的组件,而不是在整个测试之前?Junit为整个集成测试设置了一次(所有测试类)
亲切的问候, 比拉尔
使用@BeforeClass注释。
请注意注释的方法必须是静态的。
@BeforeClass
public static void oneTimeInit() {
System.out.println("It runs only once for all tests in this class.");
}
如果您使用的是maven,您可以使用maven-failsafe-plugin。它具有用于测试设置的预集成测试目标。举一个例子来看看Maven Failsafe Plugin: how to use the pre- and post-integration-test phases
听起来不错,我会看看这个,谢谢。 – bilal 2014-12-04 13:05:34
如果您使用JUnit套房,你可以使用一个@BeforeClass
执行整个套件运行前的方法和整个套件运行后@AfterClass
:
@RunWith(Suite.class)
@SuiteClasses(
{
//list your test classes here
}
)
public class IntegrationSuite{
@BeforeClass
public static void setupSuite(){
//do your initialization here
}
@AfterClass
public static void tearDownSuite(){
//...if needed
}
}
我的意思是整个整合测试,而不是测试课。我在课前已经使用过,但我有几个测试类,我想为所有测试类运行一次。 – bilal 2014-12-04 13:03:00
如果所有这些类都需要非常相同的测试准备,这是相互依赖性过大的标志。你在使用模拟还是存根? – pablosaraiva 2014-12-04 19:01:50