2017-08-08 32 views
0

我正在创建一个JUnit测试的测试jar。由于我正在测试第三部分代码,因此我不会使用“mvn test”运行测试,但是我生成了一个可执行jar并使用“java -jar”运行它。在我的测试中,我有很多不同的类别,我想选择哪一个被执行,哪一个不在命令行上。 我试过选项-Dgroups =“类别”,但它并不与“Java的罐子”工作配置执行跳过特定的测试

我想要做的事情是这样的事情:

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

测试不会失败,但是它给了我喜欢的东西: org.junit.AssumptionViolatedException:得了:,预计:是 在org.junit.Assume.assumeThat(Assume.java:95) 在org.junit .Assume.assumeTrue(Assume.java:41) ... –

回答

0

JAVA Documentation says

的java [选项] -jar file.jar [参数...]

你的情况

所以

Java的罐子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()); 
    } 
} 
相关问题