在JUnit 4中使用不同的@BeforeClass设置多次运行测试用例

tyr*_*dis 3 java junit junit4

我有一个看起来像这样的测试用例:

public class MyTest {

    private static TestObject obj;

    @BeforeClass
    public static void setUpBeforeClass() {
        obj = new TestObject();
    }

    @Test
    public void testOne() {
        assertTrue(obj.hasFoo());
    }

    @Test
    public void testTwo() {
        assertEquals(42, obj.getBar());
    }

    // More tests here...

}
Run Code Online (Sandbox Code Playgroud)

我现在想做的是使用不同的TestObject实例运行整个测试用例。假设我有10个不同的TestObject实例。现在我想运行testOne()testTwo()等等10次(我需要使用TestObject的每个实例)。

如何使用JUnit4实现呢?还是我的设计不好?有更好的主意吗?

axt*_*avt 5

使用参数化测试

@RunWith(Parameterized.class)
public class MyTest {
    public MyTest(TestObject obj) {
        this.obj = obj;
    }

    @Parameters
    public static Collection<TestObject> params() { ... }

    ...
}
Run Code Online (Sandbox Code Playgroud)