java - 如何将 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 类?有其他选择吗?
解决方案
弄清楚我做错了什么。在 settings.json 文件中,我试图将-Djdk.attach.allowAttachSelf
参数传递给java.jdt.ls.vmargs
. 但是,这不适用于 Junit 测试用例。为了为 Junit 测试用例传递 jvm 参数,需要创建一个名为java.test.config
. 请参阅 Junit 的 VSCode 文档。
这为我解决了问题。
推荐阅读
- c++ - Napi::Function::Call 上的分段违规
- java - Android连接频道时停止播放铃声(AGORA SDK)
- bash - Bash 命令嵌套条件语句失败,但为什么
- javascript - 为什么我只能为我的索引文件加载本地资源?
- python - 通过 API 响应排序
- python - 类似的递归函数具有巨大的运行时差异。这是为什么?
- javascript - Firebase 函数:错误:参数“data”的值不是有效的 Firestore 文档。输入不是纯 JavaScript 对象
- r - 你如何绘制线性回归线?
- typescript - 接口作为构造函数中的唯一参数 - 这可以做得更好/更高效吗?
- javascript - Discord.js - 超时后从特定消息中获取反应计数