当前位置: 首页 > 知识库问答 >
问题:

如何在IBM J9 JVM上使用JMockit和Gradle?

羊舌富
2023-03-14

我使用Gradle(里程碑8a)在IBM J9 JVM的项目上运行JUnit测试,根据“用JMockit运行测试”,这需要将参数-javaagent:jmockit.jar传递给JVM。然而,JMockit并没有注入mocked参数,这导致我的测试以“method(foo)应该没有参数”而失败,测试在Eclipse的HotSpot JVM上运行良好。

我扩展了test任务,以查找JAR并将参数添加到jvmargs中,如下所示:

test {
   doFirst {
     // Don't do this until the task is actually being executed, because 
     // as soon as we call testCompile.find the configuration is resolved and 
     // can't be modified anymore.
     jMockit = project.configurations.testCompile.find {
       it.name.startsWith("jmockit-")
     }
     jvmArgs "-javaagent:${jMockit}"
   }
}
dependencies {
  testCompile 'com.googlecode.jmockit:jmockit:0.999.13'
  testCompile 'junit:junit:4.10'
}

gradle check--debug的输出确认正在使用-javaagent参数:

12:44:14.788 [DEBUG] [org.gradle.process.internal.ProcessBuilderFactory] creating process builder for Gradle Worker 1
12:44:14.788 [DEBUG] [org.gradle.process.internal.ProcessBuilderFactory] in directory /home/bbobby/webapp
12:44:14.788 [DEBUG] [org.gradle.process.internal.ProcessBuilderFactory] with argument#0 = -javaagent:/home/bbobby/.gradle/caches/artifacts-8/filestore/com.googlecode.jmockit/jmockit/0.999.13/jar/a6
ba457e09361f37e386edea176c5ce4fa9ee110/jmockit-0.999.13.jar
12:44:14.789 [DEBUG] [org.gradle.process.internal.ProcessBuilderFactory] with argument#1 = -ea
12:44:14.789 [DEBUG] [org.gradle.process.internal.ProcessBuilderFactory] with argument#2 = -cp
12:44:14.789 [DEBUG] [org.gradle.process.internal.ProcessBuilderFactory] with argument#3 = /home/bbobby/.gradle/caches/1.0-milestone-8a/workerMain/classes
12:44:14.789 [DEBUG] [org.gradle.process.internal.ProcessBuilderFactory] with argument#4 = org.gradle.process.internal.launcher.GradleWorkerMain
12:44:14.816 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Started Gradle Worker 1.

我很确定我已经做了我该做的一切。为什么我的测试无法运行?

共有1个答案

吕新
2023-03-14

这是http://issues.gradle.org/browse/gradle-2189,它已经为即将发布的1.0-RC-1修正了。您今天可以试用发布候选版本。

 类似资料:
  • 因此,我想对一些不同的Dao方法使用一个通用测试。在Dao内部,我实现了与实体无关的save功能,因此我认为最好也使测试实体独立。目前,我有一个jmockit测试,它是与Spring一起autowired的。 Syncclaimdaoimpl

  • 我有一个maven项目,其中jmockit 1.18用于嘲笑,surefire用于运行测试套件,Jacoco用于测量代码覆盖率。 当我尝试将jmockit升级到1.45版时,它在初始化测试套件运行程序VM时出错。但是,当javaagent作为argline参数显式传递时,测试就会执行。 有人能告诉我是否有办法禁用jmockit检测或代理初始化吗?

  • 我对Android有点陌生,几个小时以来一直在努力研究如何将Hamcrest matchers包括在我的测试项目中。代码看起来应该在Eclipse中运行,没有指示的错误。但是当我运行测试时,Hamcrest类没有加载。我得到“NoClassDefFoundError:org.hamcrest.Matchers”。 在过去的3个小时里,我一直在浏览论坛,发现有人以前遇到过这种情况,但运气不好。我一定

  • 我曾经能够在NetBeans 8中安装和使用Sass,如关于如何在NetBeans 8.0.1中使用Sass的顶级答案所述 现在,使用当前版本的Sass(1.14.1),安装是不同的。基本上只是下载和解焦油。完成了,我已经将NetBeans指向了正确的位置。但是当前版本的Sass不能从NetBeans中正确运行:

  • 我正在创建我的第一个项目Java EE7,但我遇到了麻烦。感谢任何帮助。 Tomcat 7.0.34 JSF 2.2 PrimeFaces 3.5 javaee-api-7.0.jar 当应用程序启动时,Tomcat日志显示以下消息: Java EE 6@javax.annotation.managedBean vs@javax.inject.named vs@javax.faces.manage

  • 我们目前使用Mockito+PowerMock作为我们的主要模仿框架,并且在开始将一些代码转移到Java8时遇到了一些问题。因此,我们决定将jMockit作为一种替代方案进行评估。我对嘲笑概念有相当好的理解,但我承认我对jMockit的经验非常有限。 然而,我在测试一些在我看来应该是非常基本的东西时遇到了问题:被测试的类在其构造函数中使用New创建其他类的实例。我想让这个新调用返回一个模拟实例。