2011-12-18 73 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給你一個更細粒度的控制圍繞一套測試設置。