其他答案都没有为我做。我需要运行 40k 次测试,因此手动列出每个类不是一个选项。
我用ClasspathSuite做到了。在类路径中运行所有 Junit4 和 Junit3 测试用例的测试套件如下:
import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.extensions.cpsuite.ClasspathSuite.*;
import org.junit.runner.RunWith;
import org.junit.runner.JUnitCore;
import static org.junit.extensions.cpsuite.SuiteType.*;
@RunWith(ClasspathSuite.class)
@SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
public class RunAllSuite {
/* main method not needed, but I use it to run the tests */
public static void main(String args[]) {
JUnitCore.runClasses(RunAllSuite.class);
}
}
我需要从命令行运行它,所以这就是我所做的:
- 下载cp-1.2.6.jar
- 创建前面提到的 RunAllSuite
- 编译类,
javac RunAllSuite.java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar
- 在类路径中使用目标测试运行它,
java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar;path/to/runallsuite/folder;target/classes;target/test-classes RunAllSuite
就是这样。使用上面的 RunAllSuite,您可以在代码中的任何位置执行 JUnitCore.runClasses(RunAllSuite.class),它会在类路径中运行所有测试。ClasspathSuite 主页中还解释了其他配置选项。
另请注意,上面给出的类不打印任何内容。如果需要,您可以这样做
import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.extensions.cpsuite.ClasspathSuite.*;
import org.junit.runner.RunWith;
import org.junit.runner.JUnitCore;
import org.junit.internal.TextListener;
import static org.junit.extensions.cpsuite.SuiteType.*;
@RunWith(ClasspathSuite.class)
@SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
public class RunAllSuite {
public static void main(String args[]) {
JUnitCore junit = new JUnitCore();
junit.addListener(new TextListener(System.out));
junit.run(RunAllSuite.class);
}
}