我正在创建一个带有大量JUnit测试的测试jar。由于我正在测试第三部分代码,我没有使用“mvn test”运行测试,但我生成了一个可执行jar并使用“java -jar”运行它
在我的测试中,我有许多不同的类别,我想选择执行哪一个,这不在命令行上。 我尝试了选项-Dgroups =“categories”,但它不适用于“java -jar”
我想做的事情是这样的:
java -jar -Dcategories="cat1,cat2,cat5" executable.jar
我在代码上阅读此内容的唯一方法是使用
System.getProperty("categories");
我尝试过使用类似的东西:
@Before
public void setup() {
Assume.assumeTrue(System.getProperty("categories") != null && System.getProperty("categories").contains("cat1"));
}
它跳过测试但仍然给我一个堆栈跟踪,看起来非常糟糕。 还有其他跳过测试的选项吗?
答案 0 :(得分:0)
java [options] -jar file.jar [argument ...]
所以在你的情况下
java -jar executable.jar cat1 cat2 cat5
public static void main(String[] args) {
for (String input : args) {
if (input.equalsIgnoreCase("cat1")) {
runTests(TestOne.class);
} else {
runTests(TestTwo.class);
}
}
}
private static void runTests(Class test) {
Result result = JUnitCore.runClasses(test);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
}