使用JUnit 4在Gradle Scala单元测试中进行神奇的`classMethod`测试

Gal*_*eño 7 junit unit-testing scala junit4 gradle

我在Vert.x的Scala语言扩展中遇到了Gradle,JUnit和Scala测试执行的问题.最近我们从Vert.x 2.1.RC1升级到2.1.RC2,我们开始看到在某些环境中,例如我们的Cloudbees实例,测试执行会查找classMethod在测试类中调用的幻像方法,该方法不存在,测试时间出.结果,其余的测试失败了.

在此控制台实例中,您可以看到:

org.vertx.scala.tests.core.http.HttpTest > classMethod FAILED
    java.lang.AssertionError: Timed out waiting for test to complete
Run Code Online (Sandbox Code Playgroud)

我们不知道这classMethod是什么,它来自哪里等等.更糟糕的是,我无法在我的OSX和Linux(RHEL7)环境中复制它,无论是使用JDK 1.7u45还是1.7u51.

到目前为止,我们发现修复它的唯一方法是恢复到Vert.x 2.1.RC1(请参阅使用RC1 运行的控制台),但我们真的无法看到这个和这个神秘之间的联系classMethod.

我们已经尝试升级到Gradle 1.11,以防Gradle本身出现问题,但没有运气.我们目前正在使用JUnit 4.11.

唯一看起来有点可疑的是,即使该项目使用Scala 2.10.4,Gradle Scala插件似乎引入了Zinc,它似乎需要Scala 2.9.2.当我.gradle/在本地删除我的文件夹时,我没有看到任何Scala 2.9.2被下载.我想知道这是不是搞乱了?

最后,对于HttpCompressionTest似乎有这个的最后一次运行classMethod,我将本地javap输出与Cloudbees中的输出进行了比较,它们看起来完全相同.

我没有想法,有什么建议吗?

更新:作为最后的手段,我决定升级到Vert.x 2.1.RC3-SNAPSHOT,这一切都恢复正常.我完全不知道为什么,但我会接受它:)

Jam*_*tti 0

我已经看到这种行为是由于(意外地)在类路径上有同一库的两个不同版本而引起的。此外,当某个特定项目打包为多个不同的 JAR 时,其中一个项目的级别低于其他项目。