如何用Gradle运行TestNG的测试用例
2018-12-20 本文已影响0人
科学Jia
最近看了公司其他部门,譬如匈牙利,土耳其,夏洛特等各地的JAVA测试代码,其中,土耳其和匈牙利的测试代码写的水平最高,有设计感。
进入正题,Gradle配置Testng,除了我们曾经常见的配置testng.xml的方式,还有一种不需要配置testng.xml的方式,对于后者直接贴Gradle的代码吧。
重点在于:useTestNG() 和 include "/${testClass}.class"
test {
testLogging.showStandardStreams = true
systemProperty 'arg1', System.getProperty('arg1')
systemProperty 'arg3', System.getProperty('arg3')
systemProperty 'arg4', System.getProperty('arg4')
useTestNG()
include "**/${testClass}.class"
println "$testClass"
afterTest { desc, result ->
logger.quiet "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}"
}
}
然后你用gradle执行testng的时候,就可以用如下命令去指定测试用例的名字,以及跑测试的环境,譬如Integ,还有设置一些其他的系统环境变量,譬如用户名什么的。
gradlew clean test --refresh-dependencies -PtestClass=*E2ETests -Darg3=INTEG -Darg4=DEVELOPER_ADMIN
- 这个时候细心的你肯定要说,如果有些case我不要跑怎么办?那就用exclude指明。
test {
if (project.hasProperty('excludeTests')) {
exclude project.property('excludeTests')
}
}
运行命令:
gradle test -PexcludeTests=**/Legacy*
- 这个时候你又要说,如果我只想跑其中两个测试类怎么办?那就试试下面的方式, 直接指明你要跑的case类名。
test {
testLogging.showStandardStreams = true
systemProperty 'arg1', System.getProperty('arg1')
systemProperty 'arg3', System.getProperty('arg3')
systemProperty 'arg4', System.getProperty('arg4')
useTestNG()
//include "**/${testClass}.class"
include "**/SignalCalculationControllerE2Etests.class"
include "**/KpiControllerE2ETests.class"
//println "$testClass"
afterTest { desc, result ->
logger.quiet "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}"
}
}
- 这个时候你又要说,如果我只跑其中某个类的某个测试方法怎么办?
回答不上,所以,以上的方法就忘记吧。下面介绍新方法:
划个重点: test这个task还是要在gradle文件里写好的。对于上面的例子,改造成如下:
test {
testLogging.showStandardStreams = true
systemProperty 'arg1', System.getProperty('arg1')
systemProperty 'arg3', System.getProperty('arg3')
systemProperty 'arg4', System.getProperty('arg4')
useTestNG()
afterTest { desc, result ->
logger.quiet "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}"
}
}
不用配置gradle文件,直接运行gradle的命令。
第一个--tests我指定了哪个类的哪个测试method,譬如指定了executeTest这个方法;
第二个--tests我指定了另外一个测试类。
gradlew clean test --tests SignalCalculationControllerE2Etests.executeTest --tests KpiControllerE2ETests -Darg3=INTEG -Darg4=DEVELOPER_ADMIN
最后要说的是,Gradle运行TestNG的方法比较多,根据具体的情况,自由组合。
以上。
在写这个笔记的时候,大老板从背后路过,假装没有看到他看到我了。<( ̄ ̄)/