[英]Testing different Java Versions in Junit
當操作系統上有多個 java 類型時,有沒有辦法在 junit 測試中指定 JVM 版本?
我想做這樣的事情:
@JVM=1.5
public void test1(){
run();
}
@JVM=1.7
public void test2(){
run();
}
ETC..
不,您必須使用多個VM多次運行JUnit測試。 然后,您可以使用“ 假定”僅針對正確的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中運行這些測試兩次。
JUnit 5、可以使用EnabledOnJre
和DisabledOnJre
注解。
@EnabledOnJre(JRE.JAVA_8)
void testMyMethodInJava8() {
...
}
@DisabledOnJre(JRE.JAVA_8)
void testMyMethodInOtherVersions() {
...
}
您還可以將這些應用於整個測試 class:
@EnabledOnJre(JRE.JAVA_11)
public class MyClassTest {
...
}
您仍然需要為每個 JVM 單獨運行測試套件,但這允許您跳過在其中一個或另一個中不起作用的測試。
JUnit測試用例只是一堆Java類,而不是獨立的程序。 因此它們仍將被限制在同一JVM中。 AFAIK沒有簡單的方法可以完成您打算做的事情。 您可以針對要測試的每個Java版本,將測試用例分為多個測試套件。 然后在項目設置中更改Java版本並運行適當的測試套件。
也有一個junit.jvm屬性,但是我不確定是否可以在執行期間更改它。 你看過了嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.