在Junit中测试不同的Java版本

时间:2013-01-28 22:20:11

标签: java testing junit jvm version

有没有办法在junit测试中指定JVM版本,当OS上有多种java类型?

我想做这样的事情:

@JVM=1.5
public void test1(){
   run();
}

@JVM=1.7
public void test2(){
   run();
}

等。

2 个答案:

答案 0 :(得分:6)

不,您必须使用多个VM多次运行JUnit测试。然后,您可以使用Assume仅运行正确VM的测试:

public void test1(){
   // not compiled or tested
   Assume.assumeThat(System.getProperty("java.version"), CoreMatchers.startsWith("1.5"));
   run();
}

public void test2(){
   Assume.assumeThat(System.getProperty("java.version"), CoreMatchers.startsWith("1.7"));
   run();
}

请注意我还没编译过,所以可能会有错误。然后,在您的构建工具中,在两个不同的VM中运行这些测试两次。

答案 1 :(得分:0)

JUnit测试用例只是一堆Java类,而不是一个独立的程序。所以他们仍然会被限制在同一个JVM中。 AFAIK没有简单的方法可以做你想做的事情。您可以做的是将测试用例分成要测试的每个Java版本的测试套件。然后在项目设置中更改java版本并运行相应的测试套件。

还有一个junit.jvm属性,但我不确定你是否可以在执行中更改它。你看过它吗?