java - 在 JUnit4 中添加测试到 TestSuite

标签 java junit

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

在 Junit3 中你可以这样做

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

在 JUnit4 中怎么样?

最佳答案

一种方法是使用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。

如果您希望测试更加集成到您的构建中,请扩展 Suite

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

您使用的构造函数取决于 Suite 的调用方式。上面的代码在 Eclipse 中有效。

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

@RunWith(DynamicSuite.class)
public class DynamicTestSuite {
}

关于java - 在 JUnit4 中添加测试到 TestSuite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11662827/

相关文章:

java - Android "Cannot resolve symbol"用于setOnCheckedChangeListener 和buttonView

java - 在 Maven 测试中获取 native JNI 文件 (lwjgl)

java - 使用 JUnit 捕获异常

java - 使用 Cobertura 时如何忽略 Logger 相关的 If 条件?

java - 无法解析 safe1 (JUnit)

java - 为什么在 Java 中访问对象字段比访问数组更快?

java - 在 Java 中如何获取字符串输入以接受可能的整数?

java - 检查 Oracle 数据库中是否存在用户 - java jdbc

java - 使用 JUnit 处理 EDT/非 EDT 问题的最佳方法是什么?

java - 数据源中的 NPE