针对多个Java版本进行测试的最佳方法

针对多个Java版本进行测试的最佳方法,java,unit-testing,automated-tests,testng,integration-testing,Java,Unit Testing,Automated Tests,Testng,Integration Testing,我有多个单元测试和组件测试,我想针对多个Java版本(1.6、1.7、1.8等)进行测试 我想知道最好的方法是什么 我是否应该使用Jenkins多次运行测试,每次都将JAVA\u HOME变量的路径更改为不同的JRE 我可以使用Maven插件吗?也许不同的个人资料 此外,是否有一种使用TestNG排除基于JRE版本的测试的方法?我可以在java.version系统属性上使用if语句来处理它,但是我想知道是否有更优雅的方法 如果这会影响答案,我想说的是,展望未来,我想针对几种操作系统类型和产品的多

我有多个单元测试和组件测试,我想针对多个Java版本(1.6、1.7、1.8等)进行测试

我想知道最好的方法是什么

我是否应该使用Jenkins多次运行测试,每次都将
JAVA\u HOME
变量的路径更改为不同的JRE

我可以使用Maven插件吗?也许不同的个人资料

此外,是否有一种使用TestNG排除基于JRE版本的测试的方法?我可以在
java.version
系统属性上使用if语句来处理它,但是我想知道是否有更优雅的方法


如果这会影响答案,我想说的是,展望未来,我想针对几种操作系统类型和产品的多个版本(针对v1.0、v2.0等的相同测试)对其进行测试。

要在不同条件下运行相同的代码,jenkins只需使用不同的JAVA_HOME或其他设置运行相同的脚本即可。在不同的触发条件下或作为一个多阶段工作的一部分进行此操作是您的决定


至于TestNG,请参见此答案

一种可能的方法是使用maven概要文件,并结合

在这种方法中,您将在构建服务器上配置多个JDK,并将pom xml配置为具有不同的概要文件,以使用每个JDK运行单元测试

<>你可能想考虑测试不同的java运行时,但也要考虑不同的目标类版本;这也可以通过使用不同编译设置的不同概要文件与概要文件方法相结合


最后,也可以从配置文件中完成,这样您也可以控制它

我知道许多使用TravisCI的开源项目中使用的方法之一。在这些项目中,.travis.yml文件(TravisCI的元数据文件)包含此信息。例如:-

jdk:
  - oraclejdk7
  - oraclejdk8
  - openjdk6
  - openjdk7

我还在我的一个开源项目()中使用了它。我不知道在业界我们是否有其他一些简化的it流程,但它可能是开放的,可能因组织和项目而异。

据我所知,在linux(ubuntu)中您可以安装多个版本的java,然后更改默认值,比如模拟器?我不确定什么是最好的方法,但我会选择maven。您可以通过参数传递java版本。因此,您可以轻松地为每个版本创建不同的jenkins任务为什么要麻烦呢?Java设计为向后兼容,因此1.6代码在1.8环境中运行。它一点也不向前兼容:1.8代码不会在1.6环境中运行。是的,可能存在影响向后兼容的JVM错误。但它们是如此罕见,你最好把测试资源花在测试其他东西上。