首页 > 解决方案 > 如何将 VM 参数从 launch.json 传递到 VSCode 中的 Junit 测试类?

问题描述

我正在尝试使用 JMockit 模拟静态方法。我尝试运行的组合是 Junit5、Jmockit 1.41 和 JDK11 与 VSCode。最初我是java.lang.IllegalStateException: Running on JDK 9 requires -javaagent:<proper path>/jmockit-1.n.jar or -Djdk.attach.allowAttachSelf在 STS 上运行它时得到的。我通过-Djdk.attach.allowAttachSelf在 STS 中作为 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。错误仍然存​​在。我试图-javaagent通过 pom.xml 作为插件添加 argline 标签。但似乎没有任何效果。

PS:我已经尝试-javaagent在 settings.json 中使用。它也不起作用。该代码(具有最少代码的简单静态方法)适用于 STS。如何使它与 VSCode 一起工作?

谁能建议如何将 vmargs form launch.json 传递给 Junit Test 类?有其他选择吗?

标签: javavisual-studio-codemockitojunit5jmockit

解决方案


弄清楚我做错了什么。在 settings.json 文件中,我试图将-Djdk.attach.allowAttachSelf参数传递给java.jdt.ls.vmargs. 但是,这不适用于 Junit 测试用例。为了为 Junit 测试用例传递 jvm 参数,需要创建一个名为java.test.config. 请参阅 Junit 的 VSCode 文档。

这为我解决了问题。


推荐阅读