【发布时间】:2020-02-10 10:16:02
【问题描述】:
我正在尝试使用 JMockit 模拟静态方法。我试图运行的组合是 Junit5、Jmockit 1.41 和 JDK11 与 VSCode。最初我在 STS 上运行它时得到了java.lang.IllegalStateException: Running on JDK 9 requires -javaagent:<proper path>/jmockit-1.n.jar or -Djdk.attach.allowAttachSelf。我通过在 STS 中传递 -Djdk.attach.allowAttachSelf 作为 vm 参数解决了这个问题。这适用于 STS。
但是,当我尝试在 VSCode 中运行相同的源代码时,它抛出了相同的错误 java.lang.IllegalStateException: Running on JDK 9 requires -javaagent:<proper path>/jmockit-1.n.jar or -Djdk.attach.allowAttachSelf。所以我编辑了java.jdt.ls.vmargs 键并将-Djdk.attach.allowAttachSelf 添加为 VSCode 的 settings.json 文件中的值。但它没有用。我也尝试在 launch.json 中添加 VMArgs。错误仍然存在。我尝试通过 pom.xml 在 argline 标记中添加 -javaagent 作为插件。但似乎没有任何效果。
PS:我尝试在 settings.json 中使用-javaagent。它也不起作用。该代码(具有最少代码的简单静态方法)适用于 STS。如何让它与 VSCode 一起工作?
谁能建议如何将 vmargs 表单 launch.json 传递给 Junit Test 类?有没有其他选择?
【问题讨论】:
-
也许你可以尝试使用
task.json来传递参数,参考JUnit tasks.json
标签: java visual-studio-code mockito junit5 jmockit