1

有没有办法以编程方式将测试添加到 JUnit4 中的测试套件?

在 Junit3 中你可以这样做

TestSuite ts = new TestSuite();
ts.addTestSuite(a.class);
ts.addTestSuite(b.class);

在 JUnit4 中怎么样?

4

1 回答 1

1

一种方法是使用Request#classes()

public static void main(String[] args) throws Exception {
    Request request = Request.classes(new Class<?>[] {Test1.class, Test2.class});

    JUnitCore jUnitCore = new JUnitCore();
    RunListener listener = new RunListener() {

        @Override
        public void testFailure(Failure failure) throws Exception {
            System.out.println("failure=" + failure);
        }

    };
    jUnitCore.addListener(listener);
    jUnitCore.run(request);
}

在 RunListener 中,您可以覆盖的不仅仅是 testFailure。

如果您希望您的测试更多地集成到您的构建中,请扩展套件

public static class DynamicSuite extends Suite {
    public DynamicSuite(Class<?> klass, RunnerBuilder builder) throws InitializationError {
        super(builder, klass, new Class<?>[] {Test1.class, Test2.class});
    }
}

您使用的构造函数取决于调用套件的方式。以上在 Eclipse 中有效。

然后只需注释一个空类@RunWith(DynamicSuite.class)

@RunWith(DynamicSuite.class)
public class DynamicTestSuite {
}
于 2012-07-26T12:18:54.997 回答