【发布时间】:2012-01-22 22:59:16
【问题描述】:
我在http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/ 找到了比较。如何在 JUnit 中准备 @BeforeTest 之类的东西?
【问题讨论】:
标签: unit-testing junit integration-testing testng
我在http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/ 找到了比较。如何在 JUnit 中准备 @BeforeTest 之类的东西?
【问题讨论】:
标签: unit-testing junit integration-testing testng
据我了解,BeforeTest 指定了一种在运行一组测试之前运行的方法,并且可以为该组测试定义。 JUnit 中没有等效的分组,除了普通的套件,因此您必须定义一个套件并在您的套件中正常使用@BeforeClass 和@AfterClass。
如果您想要更复杂的行为,请参阅TestRule,尤其是ExternalResource。
【讨论】:
不太熟悉TestNG,但据我了解,您可以通过Categories、Suite 和@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 所提到的,还有TestRules 可以让您对围绕一组测试进行设置进行更细粒度的控制。
【讨论】: