【问题标题】:How to pass VM arguments from launch.json to Junit Test class in VSCode?如何将 VM 参数从 launch.json 传递到 VSCode 中的 Junit 测试类?
【发布时间】: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 类?有没有其他选择?

【问题讨论】:

标签: java visual-studio-code mockito junit5 jmockit


【解决方案1】:

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

这为我解决了问题。

【讨论】:

  • 我在vmargs 下的java.test.config 下添加了-Djdk.attach.allowAttachSelf,但这并没有任何区别。需要帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 2019-07-21
  • 2019-02-03
相关资源
最近更新 更多