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

时间:2014-03-31 11:46:26

标签: java eclipse unit-testing testing gradle

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

启动测试时启用调试 在build.gradle中,我的测试任务现在看起来像是:

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

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

4 个答案:

答案 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' } }

执行

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

使用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