我在
Scala language extension for Vert.x中遇到了Gradle,JUnit和Scala测试执行的问题.最近我们从Vert.x 2.1.RC1升级到2.1.RC2,我们开始看到在某些环境中,例如我们的Cloudbees实例,测试执行看起来在测试类中使用一个名为classMethod的幻像方法,该方法不存在,并且测试超时.结果,其余的测试失败了.
在这个console实例中,您可以看到:
org.vertx.scala.tests.core.http.HttpTest > classMethod Failed java.lang.AssertionError: Timed out waiting for test to complete
我们不知道这个classMethod是什么,它来自哪里等等.更糟糕的是,我无法在我的OSX和Linux(RHEL7)环境中复制它,无论是使用JDK 1.7u45还是1.7u51.
到目前为止我们发现修复它的唯一方法是恢复到Vert.x 2.1.RC1(见RC00的console of run),但我们真的无法看到这个和这个神秘的classMethod之间的联系.
我们已经尝试升级到Gradle 1.11,以防Gradle本身出现问题,但没有运气.我们目前正在使用JUnit 4.11.
唯一看起来有点可疑的是,即使项目使用Scala 2.10.4,Gradle Scala插件似乎是bring in Zinc which appears to need Scala 2.9.2.当我在本地清除我的.gradle /文件夹时,我没有看到任何Scala 2.9.2被下载.我想知道这是不是搞乱了?
最后,对于HttpCompressionTest似乎有classMethod的最后一次运行,我将javap输出locally与the one in Cloudbees进行了比较,它们看起来完全相同.
我没有想法,有什么建议吗?
更新:作为最后的手段,我决定升级到Vert.x 2.1.RC3-SNAPSHOT,它全是back to normal.我完全不知道为什么,但我会接受它:)
解决方法
我已经看到这种行为(意外)在类路径上有两个不同版本的同一个库.此外,当某个特定项目打包为多个不同的JAR时,其中一个JAR与其他JAR相比处于低级别.