2014-12-04 104 views
0

我有一些自己的组件,我在我的Java应用程序之前开始。大约需要30秒才能开始。在我的集成测试中,我在类和所有测试用例运行之前启动我的组件。我的问题是,是否可以在测试课之前运行我的组件,而不是在整个测试之前?Junit为整个集成测试设置了一次(所有测试类)

亲切的问候, 比拉尔

回答

1

使用@BeforeClass注释。

请注意注释的方法必须是静态的。

@BeforeClass 
public static void oneTimeInit() { 
    System.out.println("It runs only once for all tests in this class."); 
} 
+0

我的意思是整个整合测试,而不是测试课。我在课前已经使用过,但我有几个测试类,我想为所有测试类运行一次。 – bilal 2014-12-04 13:03:00

+0

如果所有这些类都需要非常相同的测试准备,这是相互依赖性过大的标志。你在使用模拟还是存根? – pablosaraiva 2014-12-04 19:01:50

1

如果您使用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 
    } 
}