## 一句話引發的"血案"
官方文檔中關于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。具體配置如下:

進入Debug Configurations界面

點New以后會自動添加你要測試的類,但是這個時候要注意一定要把端口改成你在命令行監聽的端口號5005。如果命令行上是其他端口,只要跟其一樣就行。

這個時候你點擊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