我正在尝试使用JMockit模拟静态方法。我尝试运行的组合是Junit5、Jmockit1.41和带有VSCode的JDK11。最初,我在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密钥,并在VSCode的settings.json文件中添加了-Djdk.attach.allowAttachSelf作为值。但它并没有起作用。我也尝试在launch.json中添加VMArgs。错误仍然存在。我试图通过pom.xml将-javaagent作为插件添加到argline标签中。但似乎什么都不起作用。
PS:我试过在settings.json中使用-javaagent。它也不起作用。代码(包含最少代码的简单静态方法)可以很好地与STS一起工作。如何让它与VSCode协同工作?
有没有人能建议如何将vmargs从launch.json传递到Junit Test类?还有别的选择吗?
发布于 2020-02-13 11:45:33
找出我做错了什么。在settings.json文件中,我试图在java.jdt.ls.vmargs中传递-Djdk.attach.allowAttachSelf参数。但是,这不适用于Junit测试用例。为了为Junit测试用例传递jvm,需要创建一个名为java.test.config的单独键。请参阅Junit的VSCode文档。
这为我解决了问题。
https://stackoverflow.com/questions/60148185
复制相似问题