【发布时间】: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