使用JUnit的@Parameterized时,我可以让一些测试仍然只运行一次吗?
2022-08-31 17:28:02
在许多情况下,我使用对许多排列运行测试。这工作得很好,并保持测试代码本身简单干净。@Parameterized
但是,有时我希望某些测试方法仍然只运行一次,因为它们不使用参数,有没有办法使用JUnit将测试方法标记为“单例”或“运行一次”?
注意:这与在Eclipse中运行单个测试无关,我知道如何做到这一点:)
在许多情况下,我使用对许多排列运行测试。这工作得很好,并保持测试代码本身简单干净。@Parameterized
但是,有时我希望某些测试方法仍然只运行一次,因为它们不使用参数,有没有办法使用JUnit将测试方法标记为“单例”或“运行一次”?
注意:这与在Eclipse中运行单个测试无关,我知道如何做到这一点:)
您可以使用封闭的运行器构建测试。
@RunWith(Enclosed.class)
public class TestClass {
@RunWith(Parameterized.class)
public static class TheParameterizedPart {
@Parameters
public static Object[][] data() {
...
}
@Test
public void someTest() {
...
}
@Test
public void anotherTest() {
...
}
}
public static class NotParameterizedPart {
@Test
public void someTest() {
...
}
}
}
您可以将任意数量的测试类关联到一起运行,以使用套件一起运行。这样,在测试类时将运行所有测试,并且可以混合不同的测试运行程序。
添加包含非参数化测试的其他类。
import org.junit.runners.Suite;
import org.junit.runner.RunWith;
@RunWith(Suite.class)
@Suite.SuiteClasses({ParameterizedTestClass.class, UnitTests.class, MoreUnitTests.class})
public class SutTestSuite{
//Empty...
}