美文网首页软件测试
如何用Gradle运行TestNG的测试用例

如何用Gradle运行TestNG的测试用例

作者: 科学Jia | 来源:发表于2018-12-20 11:13 被阅读0次

    最近看了公司其他部门,譬如匈牙利,土耳其,夏洛特等各地的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的方法比较多,根据具体的情况,自由组合。

    以上。

    在写这个笔记的时候,大老板从背后路过,假装没有看到他看到我了。<( ̄ ̄)/

    相关文章

      网友评论

        本文标题:如何用Gradle运行TestNG的测试用例

        本文链接:https://www.haomeiwen.com/subject/kaiekqtx.html