## 一句话引发的"血案"
官方文档中关于test的信息有这么一句话:
~~~
The test process can be started in debug mode (see getDebug()) in an ad-hoc manner by supplying the `--debug-jvm` switch when invoking the build.
gradle someTestTask --debug-jvm
~~~
但是如果我们在命令行下敲这个命令,会出现如下信息:
~~~
D:\eclipse\workspare\TestNG_gradl>gradle clean test --debug-jvm
:clean
:compileJava
:processResources
:classes
:compileTestJava
:processTestResources
:testClasses
:test
Listening for transport dt_socket at address: 5005
> Building 87% > :test
~~~
光标会一直在这闪烁,到底有啥用呢?搞了一上午,找到了[一篇文章](http://www.cnblogs.com/warrior/p/3835240.html),恍然大悟。
这个--debug-jvm的参数会在执行测试的时候一直监听5005端口的信息,那么这个信息从哪里来?我慢慢道来。
## 2.以TestNG为例
我的测试任务代码如下,就是启动TestNG测试,然后在测试前输出一句话,测试case中的输出信息也要输出。
~~~
test {
useTestNG()
//systemProperty 'some.prop', 'value'
//exclude 'org/gradle/SimpleTest.class'
//reports.html.enabled = true
//scanForTestClasses = false
beforeTest { descriptor ->
logger.lifecycle("Running test: " + descriptor)
}
onOutput { descriptor, event ->
logger.lifecycle("Test: " + descriptor + " produced standard out/err: " + event.message )
}
}
~~~
这个时候我们在eclipse中debug模式启动我们的case。但是要注意一点不是直接Debug as->TestNG。具体配置如下:
![](https://box.kancloud.cn/2016-01-07_568e466c0ddb7.jpg)
进入Debug Configurations界面
![](https://box.kancloud.cn/2016-01-07_568e466c36b94.jpg)
点New以后会自动添加你要测试的类,但是这个时候要注意一定要把端口改成你在命令行监听的端口号5005。如果命令行上是其他端口,只要跟其一样就行。
![](https://box.kancloud.cn/2016-01-07_568e466c52271.jpg)
这个时候你点击Debug就会发现,命令行有输出了。
~~~
Running test: test method aFastTest(org.gradle.SimpleTest)
Test: test method aFastTest(org.gradle.SimpleTest) produced standard out/err: fa
st test
Running test: test method aSlowTest(org.gradle.SimpleTest)
Test: test method aSlowTest(org.gradle.SimpleTest) produced standard out/err: sl
ow test
Test: test 'Gradle test' produced standard out/err: tearDown
Test: test 'Gradle test' produced standard out/err: setUp
Running test: test method aFastTest1(org.gradle.SimpleTest1)
Test: test method aFastTest1(org.gradle.SimpleTest1) produced standard out/err:
fast test1
Running test: test method aSlowTest1(org.gradle.SimpleTest1)
> Building 87% > :test > 3 tests completed
~~~
而且还会等待debug的case结束。这就是debug模式.
- 前言
- gradle学习(1)-helloworld
- gradle学习(2)-基础语法
- gradle学习(3)-基础认识
- gradle学习(4)-构建java项目
- gradle学习(5)-创建eclipse项目
- gradle学习(6)-依赖管理
- gradle学习(7)-groovy
- gradle学习(8)-gradle的命令行
- gradle学习(9)-获取build相关信息
- gradle学习(10)-gui
- gradle学习(11)-编写构建脚本
- gradle学习(12)-groovy一些基础语法
- gradle学习(13)-有的没的
- gradle学习(14)-任务
- gradle学习(15)-任务
- gradle学习(16)-操作文件
- gradle学习(17)-被合并的ant
- gradle学习(18)-ant的属性
- gradle学习(19)-log系统
- gradle学习(20)-详解java插件
- gradle学习(21)-在eclipse中构建java项目
- gradle复习(1)-2种定义任务方式的区别
- gradle复习(2)-eclipse中添加依赖jar包
- gradle复习(3)-在gradle项目中使用TestNG
- gradle复习(4)-Cannot find System Java Compiler
- gradle复习(5)-Test remote debug
- gradle复习(6)-深入Jacoco
- gradle复习(7)-深入Jacoco
- gradle复习(8)-Task中行为
- gradle学习(22)-Sonar
- gradle学习(23)-Sonar runner