2011-12-18 72 views

回答

1

据我所知,BeforeTest指定了一个方法,该方法在一组测试运行之前运行,并且可以为该组测试定义。除了普通套件外,JUnit中没有相同的分组,所以您必须定义一个套件并在套件中正常使用@BeforeClass@AfterClass

如果您想要更复杂的行为,请参阅TestRule,特别是ExternalResource

1

不像TestNG那样熟悉,但根据我的理解,您可以使用CategoriesSuite@BeforeClass/@AfterClass的组合做类似处理。

例如:

import org.junit.BeforeClass; 
import org.junit.experimental.categories.Categories; 
import org.junit.experimental.categories.Categories.IncludeCategory; 
import org.junit.runner.RunWith; 
import org.junit.runners.Suite.SuiteClasses; 


@RunWith(Categories.class) 
@SuiteClasses(MyClassTest.class) 
@IncludeCategory(IntegrationTest.class) 
public class StaticTests { 
    @BeforeClass 
    public static void setUp() { 
     System.out.println("Hello, World!"); 
    } 
} 

然后你的测试标志事情@Category(IntegrationTest.class)内,你就会有测试,从多个不同的测试类,你可以到处跑初始化的逻辑分组。

类别允许您标记包含在套件中的特定测试,尽管它也可能(如果您按照类首先分开)只是将相关的测试包括在套件中或让它们从基类继承它具有该配置。哪一个最好取决于你想如何分组你的测试和你的特定用例。

由于Matthew Farwell提到,也有TestRule s给你一个更细粒度的控制围绕一套测试设置。