配置执行以跳过特定测试

时间:2017-08-08 07:49:59

标签: java maven junit categories

我正在创建一个带有大量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"));
  }

它跳过测试但仍然给我一个堆栈跟踪,看起来非常糟糕。 还有其他跳过测试的选项吗?

1 个答案:

答案 0 :(得分:0)

JAVA Documentation says

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());
    }
}