簡體   English   中英

在 Junit 中測試不同的 Java 版本

[英]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、可以使用EnabledOnJreDisabledOnJre注解。

  @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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM