当我尝试通过gradle测试任务运行JUnit测试时遇到了麻烦。我用Run As直接在eclipse中运行测试 - > JUnit测试,一切正常,测试成功。但是通过测试任务,测试总是失败。编码我的资源txt文件可能有些麻烦。所以我想在使用gradle
启动测试时启用调试 在build.gradle中,我的测试任务现在看起来像是:test {
tasks.withType(Compile) {
options.encoding = 'UTF-8'
}
}
那么我应该怎样做才能启用调试?我在Eclipse中从Gradle面板运行gradle任务,而不是从控制台运行。谢谢!
答案 0 :(得分:70)
要调试测试,应使用以下参数:--debug-jvm
例如:gradle test --debug-jvm
Gradle将在运行测试之前暂停执行,并等待端口5005上的调试器连接。
仅执行特定测试时,请参阅https://docs.gradle.org/current/userguide/java_testing.html#simple_name_pattern
答案 1 :(得分:24)
正如Gradle User Guide中的23.12. Test
所述,执行gradle test -Dtest.single=MyTestClass -Dtest.debug
将在启动时挂起测试JVM,并允许在端口5005上连接外部调试器(例如Eclipse调试器)
答案 2 :(得分:5)
将此作为--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视图中看到操作,每当我运行{{ 1}}来自命令行,就像新线程的启动/停止一样,但是无法触发断点,现在尝试解决这个问题...
Fyi停止deamon run gradle test
以上作为参考,这适用于触发测试中的断点,我关闭了deamon,因为我无法使其正常工作:
使用本文中的说明:http://blogs.steeplesoft.com/posts/2013/gradle-tip-attaching-a-debugger.html
gradle --stop
通过test {
if (System.getProperty('DEBUG', 'false') == 'true') {
jvmArgs '-Xdebug',
'-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10999'
}
}
使用gradle test -DDEBUG=true
时,上述解决方案无法正常工作。
相反它应该被替换为:
org.junit.platform.gradle.plugin
答案 3 :(得分:1)
我在4.6(gradle)上,当我在build.gradle文件中有这个时,我能够调试我的测试:
test {
debug true
}
链接 - https://docs.gradle.org/4.6/userguide/userguide_single.html#sec:java_test