如何在使用 1.6 运行基本代码时使用 Java 1.7 编写 Junit

Posted

技术标签:

【中文标题】如何在使用 1.6 运行基本代码时使用 Java 1.7 编写 Junit【英文标题】:How to write Junit with Java 1.7 while running base code with 1.6 【发布时间】:2013-10-13 18:05:20 【问题描述】:

我想在我的测试中使用 java 7 并在代码中使用 java 6。如何做到这一点?

【问题讨论】:

这是一个非常糟糕的主意,恕我直言。 如果您对环境有任何控制权,那么让它们都使用相同的 JDK 版本是有意义的。 我没有任何控制权。在代码上我依赖于 java 1.6,在测试中我想使用更新的语法。 Different maven compiler versions for test and main 的可能重复项 【参考方案1】:

还可以在maven-compiler-plugin的执行阶段testCompile设置源和目标。所以尝试这样的事情

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <executions>
       <execution>
           <id>testCompileWithJDK7</id>
           <phase>test-compile</phase>
           <configuration>
              <source>1.7</source>
              <target>1.7</target>              
           </configuration> 
       </execution>
    </executions>
</plugin>

【讨论】:

【参考方案2】:

您可以将 maven-surefire-plugin 使用的 jvm 设置为指向 java 7 可执行文件。

见http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#jvm

【讨论】:

Maven 失败:org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project MyProject: Compilation failure 你应该将maven-compiler-plugin的source和target属性设置为1.6,并确保mvn是使用jdk 6启动的。看来你的源代码与jdk版本不兼容你开始了 mvn 构建。您能否更新问题并添加:jdk mvn is started with, maven-compiler-plugin config, maven-surefire-plugin config

以上是关于如何在使用 1.6 运行基本代码时使用 Java 1.7 编写 Junit的主要内容,如果未能解决你的问题,请参考以下文章

Java Swing 1.6 更新 23 个使用 Applet 的 JVM 锁

Java 1.6 被后台 Symfony 任务调用时损坏

疯狂Java讲义-读书笔记1.6 Java程序的基本规则

Eclipse Eclipse 在 1.6 下运行,但需要 1.7

Spark 1.6:java.lang.IllegalArgumentException:spark.sql.execution.id已设置

Spark 1.6:java.lang.IllegalArgumentException:spark.sql.execution.id 已设置