如何通过Gradle测试任务在我的JUnit上启用调试

当我尝试通过gradle测试任务运行JUnit测试时遇到了麻烦。 当我使用Run As – > JUnit测试直接在eclipse中运行测试时,一切正常,测试成功。 但是通过测试任务,测试总是失败。 编码我的资源txt文件可能有些麻烦。 所以我想在使用gradle启动测试时启用调试

在build.gradle中,我的测试任务现在看起来像:

test { tasks.withType(Compile) { options.encoding = 'UTF-8' } } 

那么我应该怎么做才能启用调试? 我在Eclipse中从Gradle面板运行gradle任务,而不是从控制台运行。 谢谢!

要调试测试,应使用以下参数: --debug-jvm debug --debug-jvm

例如: gradle test --debug-jvm
Gradle将在运行测试之前暂停执行,并等待端口5005上的调试器连接。

要仅执行特定测试,请参阅https://docs.gradle.org/current/userguide/java_testing.html#simple_name_pattern

23.12. Test 在Gradle用户指南中 gradle test -Dtest.single=MyTestClass -Dtest.debug ,执行gradle test -Dtest.single=MyTestClass -Dtest.debug将在启动时挂起测试JVM,并允许在端口5005上连接外部调试器(例如Eclipse调试器)。

把它放在这里--debug-jvm对我不起作用,我能够通过设置:

  org.gradle.daemon=true org.gradle.jvmargs=... -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=10999 

  ~/.gradle/gradle.properties 

但是当我为项目连接eclipse调试器时,没有设置编译/触发器的断点…我通过调试器连接,我可以在Debug视图中看到动作,每当我从命令行运行gradle test ,就像新线程启动/停止,但无法触发断点,现在尝试解决此问题…

Fyi停止deamon运行gradle --stop

其他方案

以上作为参考,这适用于触发测试中的断点,我关闭了deamon,因为我无法使其正常工作:

使用本文中的说明: http : //blogs.steeplesoft.com/posts/2013/gradle-tip-attaching-a-debugger.html

 test { if (System.getProperty('DEBUG', 'false') == 'true') { jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10999' } } 

通过gradle test -DDEBUG=true执行

使用JUnit Platform Gradle插件时的解决方案

使用org.junit.platform.gradle.plugin时,上述解决方案无效。

相反它应该被替换为:

 junitPlatformTest { if (System.getProperty('DEBUG', 'false') == 'true') { jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10999' } } 

我在4.6(gradle)上,当我在build.gradle文件中有这个时,我能够调试我的测试:

 test { debug true } 

链接 – https://docs.gradle.org/4.6/userguide/userguide_single.html#sec:java_test