在IntelliJ中运行Corda flow测试时出现错误

8
当我在IntelliJ中运行Corda流程测试时,测试失败,并出现以下错误:

QUASAR WARNING: Quasar Java Agent未运行。如果您正在使用其他检测方法,则可以忽略此消息;否则,请参阅Quasar文档中的入门部分。

java.lang.IllegalStateException:缺少“-javaagent”JVM参数。请确保将测试与附加到您的JVM的Quasar Java代理一起运行。有关更多详细信息,请参见 https://docs.corda.net/troubleshooting.html-“Fiber classes not instrumented” 。

我该如何解决这个问题?

4个回答

17

在运行 Corda 流程之前,需要使用 Quasar 进行仪器化,以便在执行过程中可以暂停。

在 IntelliJ 中完成这一步骤,您需要:

  • 为测试创建一个运行配置
  • 打开运行配置并更改 VM 选项为 -ea -javaagent:PATH-TO-QUASAR-JAR
    • 在 CorDapp 示例和模板中,quasar.jar 位于 lib/quasar.jar,因此您将使用 -ea -javaagent:../lib/quasar.jar

或者,您可以编辑默认的 JUnit 运行配置,使其默认使用 Quasar javaagent,从而避免每次选择新测试运行时都要进行更改。


有没有一种方法可以将它包含在Gradle或测试依赖项中?如果我们不希望它作为VM参数包含在我们的运行配置中怎么办? - Arsalan Khalid
当节点正常运行时,它将自动添加。这仅适用于测试。目前没有绕过它的方法。 - Joel
如果你使用TestNG,你可以使用一个TestNG监听器来自动加载它。 - opticyclic
我卡在“启动Gradle守护进程…”和“未收到测试事件”上。 - Rodrigo Ruiz

6
这是一个基本错误,如果您没有设置Quasar,则会遇到这个错误。您需要选择您的测试->转到Intellij顶部栏->运行->编辑配置,然后在VM选项中进行如下设置:请参考此图片: enter image description here

0
顺便说一下,如果你在VSCode中遇到同样的错误,可以添加:
"java.test.config": {
    "vmArgs": ["-ea", "-javaagent:../lib/quasar.jar"]
},

settings.json 文件中。路径 ../lib/quasar.jar 在您的项目中可能会有所不同。


0

来自模板自述文件

我们建议您编辑您的IntelliJ首选项,以便使用Gradle运行程序 - 这意味着quasar utils插件将确保为您设置一些标志(例如-javaagent - 请参见下文)。

要切换到使用Gradle运行程序:

导航到构建、执行、部署 -> 构建工具 -> Gradle -> 运行程序(或搜索运行程序)Windows: 这在"设置"中 MacOS: 这在"首选项"中 将"委托IDE构建/运行操作给gradle"设置为true 设置"使用以下方式运行测试:"为"Gradle测试运行程序" 如果您更喜欢使用内置的IntelliJ JUnit测试运行程序,则可以运行gradlew installQuasar,它将把您的quasar JAR文件复制到lib目录。然后,您需要为每个测试指定-javaagent:lib/quasar.jar,并将运行目录设置为项目根目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接