如何通过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