【问题标题】:How can I use javac to cross compile my old tests to be compatible with java 8?如何使用 javac 交叉编译我的旧测试以与 java 8 兼容?
【发布时间】:2016-01-20 20:08:25
【问题描述】:

我在一家目前正在开发服务器软件的公司工作,我的工作是为该软件运行自动化测试。最新版本的服务器是使用 Java 8 构建的,这会导致问题,因为我们的旧测试框架是为适应 Java 7 而设计的。我们使用 Java 的 TestNG 插件来运行我们所有的测试,但据我所知,每个版本的 TestNG 都是用 java 7 编译的,所以如果我用 java 8 编译测试,如果我尝试用插件运行它们,插件将抛出一个 major.minor unsupported 52.0 错误。另一方面,使用 Java 7 编译测试会导致在测试尝试向服务器发送请求时发生相同的错误。

我如何交叉编译这些测试,以便它们可以同时与 TestNG 和服务器一起使用?交互的工作方式如下:TestNG 调用测试,然后测试调用服务器。

我已经阅读了一些内容,我想我需要类似的东西:

javac -source 1.7 -target 1.8 项目名称

这是一种可行的方法吗?

【问题讨论】:

  • 如果您需要编译的类与 Java 7 一起使用,请使用 -target 1.7
  • TestNG 支持 Java 7 或更高版本,所以它应该可以工作。当然,如果您使用-target 1.8,您将需要一个 1.8 的 JVM 来运行您的测试。关于向服务器发送请求,我们需要更多上下文来了解这些请求如何受到目标或 JVM 版本的影响。
  • 我已经尝试过 -target 1.7。它使测试与 TestNG 插件兼容,但现在它们与服务器本身不兼容。我不能透露太多细节@Didier L(专有知识和诸如此类),但是服务器有许多类文件(用java8编译)并且测试调用这些类文件中的函数来与服务器交互。
  • 使用-target 1.7 编译的类应该可以在 1.8 JVM 上运行,无论是 TestNG 还是您自己的代码。如果您不提供更多详细信息,恐怕没有人可以提供帮助。像这样我们甚至不知道你是如何运行 TestNG 的,也不知道你在运行哪个应用服务器。此外,您应该选择是更喜欢在 1.7 还是 1.8 JVM 上运行测试,并专注于使其正常工作。如果我是你,我会选择 1.8。

标签: java testing java-8 java-7 cross-compiling


【解决方案1】:

是的,我在我的一个项目中遇到了同样的问题。 javac -source 1.7 -target 1.8 projectName 对我来说很好

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    相关资源
    最近更新 更多