gradle-TestNG配置

1.gradle项目

在eclipse中创建的Java项目,用gradle管理。我要复习的是关于在gradle中使用TestNG的知识。首先TestNG环境配置如上一篇文章

测试目录下有2个java文件。一个是PersonTest.java,一个是SimpleTest。

PersonTest.java:用junit写的测试类。

SimpleTest:TestNG写的测试类。

[java] view plain copy

  1. public class PersonTest {
  2. @Test
  3. public void canConstructAPersonWithAName() {
  4. Person person = new Person("Larry");
  5. assertEquals("Larry", person.getName());
  6. }
  7. }

[java] view plain copy

  1. public class SimpleTest {
  2. @BeforeClass
  3. public void setUp() {
  4. System.out.println("setUp");
  5. }
  6. @Test(groups = { "slow" })
  7. public void aSlowTest() {
  8. System.out.println("slow test");
  9. }
  10. @Test(groups = { "fast" })
  11. public void aFastTest() {
  12. System.out.println("fast test");
  13. }
  14. }

build.gradle原始脚本如下:

build.gradle

[java] view plain copy

  1. apply plugin: ‘java‘
  2. apply plugin: ‘eclipse‘
  3. sourceCompatibility = 1.7
  4. version = ‘1.0‘
  5. jar {
  6. manifest {
  7. attributes ‘Implementation-Title‘: ‘Gradle Quickstart‘, ‘Implementation-Version‘: version
  8. }
  9. }
  10. repositories {
  11. mavenCentral()
  12. }
  13. dependencies {
  14. compile group: ‘commons-collections‘, name: ‘commons-collections‘, version: ‘3.2‘
  15. compile ‘org.testng:testng:6.8.17‘
  16. testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.+‘
  17. }
  18. task copyJars(type:Copy){
  19. from configurations.runtime
  20. into ‘libs‘
  21. }
  22. uploadArchives {
  23. repositories {
  24. flatDir {
  25. dirs ‘repos‘
  26. }
  27. }
  28. }

这个时候执行命令,你会发现默认会执行JUnit的case。

[java] view plain copy

  1. D:\eclipse\workspare\TestNG_gradl>gradle build
  2. :compileJava
  3. :processResources
  4. :classes
  5. :jar
  6. :assemble
  7. :compileTestJava
  8. :processTestResources
  9. :testClasses
  10. :test
  11. :check
  12. :build
  13. BUILD SUCCESSFUL
  14. Total time: 5.179 secs

报告如下:

那么我要如何选择TestNG的呢?

2.执行TestNG测试

很简单,在build.gradle添加如下语句

[java] view plain copy

  1. test {
  2. useTestNG()
  3. }

先执行clean任务清空之前的build文件。重新build:

[java] view plain copy

  1. D:\eclipse\workspare\TestNG_gradl>gradle clean
  2. :clean
  3. BUILD SUCCESSFUL
  4. Total time: 4.355 secs
  5. D:\eclipse\workspare\TestNG_gradl>gradle build
  6. :compileJava
  7. :processResources
  8. :classes
  9. :jar
  10. :assemble
  11. :compileTestJava
  12. :processTestResources
  13. :testClasses
  14. :test
  15. :check
  16. :build
  17. BUILD SUCCESSFUL
  18. Total time: 5.319 secs

你会发现,执行的case就是TestNG的case啦。

就是这么简单。

3.TestNG配置

报告配置

默认情况下报告中html文件是存在的,我们可以选择不生成html文件。

build.gradle:

[java] view plain copy

  1. test {
  2. useTestNG()
  3. reports.html.enabled = false
  4. }

这个时候重新构建的话就不再生成reports文件了。

如果我们想将报告copy到其他路径。注意这里是copy不是重定向。

[java] view plain copy

  1. task testReport(type:TestReport){
  2. destinationDir = file("D:/gradle_product/0120")
  3. reportOn test
  4. }

这个时候clean在执行testReport:

[java] view plain copy

  1. D:\eclipse\workspare\TestNG_gradl>gradle clean testReport
  2. :clean
  3. :compileJava
  4. :processResources
  5. :classes
  6. :compileTestJava
  7. :processTestResources
  8. :testClasses
  9. :test
  10. :testReport
  11. BUILD SUCCESSFUL
  12. Total time: 5.447 secs

这个时候你会在相应目录下找到报告相关的文件。

分组测试

选择某一个组的case进行测试

build.gradle:

[java] view plain copy

  1. test {
  2. useTestNG{
  3. includeGroups ‘slow‘
  4. }
  5. //reports.html.enabled = false
  6. }

我们选择测试slow分组的case。重新构建查看报告如下:

发现就执行了一条case,点进去

分组配置成功。

分class文件测试

我们上面是根据TestNG中分组来进行测试的,也有按照一个测试类文件进行测试,比如我们就像测试一个java文件里的测试项。为了区分,我们添加了一个SimpleTest1.java的TestNG的case类。

[java] view plain copy

  1. public class SimpleTest1 {
  2. @BeforeClass
  3. public void setUp() {
  4. System.out.println("setUp");
  5. }
  6. @Test(groups = { "slow" })
  7. public void aSlowTest1() {
  8. System.out.println("slow test1");
  9. }
  10. @Test(groups = { "fast" })
  11. public void aFastTest1() {
  12. System.out.println("fast test1");
  13. }
  14. }

这个时候我们如果想测SimpleTest1有两种方法。

1.include包含被测类文件

build.gradle:

[java] view plain copy

  1. test {
  2. useTestNG()
  3. systemProperty ‘some.prop‘, ‘value‘
  4. include ‘org/gradle/SimpleTest1.class‘
  5. }

2.由于我们这里面只有2个文件,这样我们通过剔除SimpleTest类来达到测试SimpleTest1类的效果。

测试的结果是和上面的结果一样的,就不再贴图了。

两种过滤条件的结合

现在我们将分组条件和分class文件这两个条件一起使用,看看效果。

上面我们只测试了SimpleTest1.class中的全部方法,这个时候我们用分组来过滤一下,只测试SimpleTest1.class里的slow分组的方法。

build.gradle:

[java] view plain copy

  1. test {
  2. useTestNG{
  3. includeGroups ‘slow‘
  4. }
  5. systemProperty ‘some.prop‘, ‘value‘
  6. exclude ‘org/gradle/SimpleTest.class‘
  7. }

这个时候我们重新构建,执行后你会发现只测试了aSlowTest1方法。

当然过滤分组还可以通过excludeGroups ‘fast’和上面的效果是一样的,就不再举例了。

下面要尝试的是,当这两个条件组合在一起的时候没找到要测试的case会发生什么?

刚才我们测试了SimpleTest1.class中的slow分组的case,现在把添加改成slow1,因为slow1是没有的,所以应该不会在SimpleTest1.class找到相应的case,看这次的构建结果是啥样的。

build.gradle

[java] view plain copy

  1. test {
  2. useTestNG{
  3. includeGroups ‘slow1‘
  4. }
  5. systemProperty ‘some.prop‘, ‘value‘
  6. exclude ‘org/gradle/SimpleTest.class‘
  7. }

结果文件如下,结果文件是有的,但是可以看到结果文件没有case的相关信息,说明没有执行任何case。

3.利用testng.xml进行配置

gradle项目中也可以使用testng.xml来进行测试case的配置

我们首先新建一个testng.xml文件:

[java] view plain copy

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <suite name="doctorng">
  3. <!--enabled="true"让测试生效,可根据情况开启或关闭某些测试-->
  4. <test name="test" enabled="true">
  5. <!--指定参数-->
  6. <parameter name="accesskey" value="f0af8e412cef7e5058beeb6df2012e1e"/>
  7. <!--指定测试包,注意加 .* -->
  8. <packages>
  9. <package name="org.gradle.*"/>
  10. </packages>
  11. <!--指定测试类-->
  12. <classes>
  13. <class name="org.gradle.SimpleTest"/>
  14. <!--过滤测试类的方法-->
  15. <class name="org.gradle.SimpleTest1">
  16. <methods>
  17. <include name="aFastTest" />
  18. </methods>
  19. </class>
  20. </classes>
  21. <!--指定测试分组-->
  22. <groups>
  23. <run>
  24. <!--包含-->
  25. <include name="fast"/>
  26. <!--排除-->
  27. <exclude name="slow"/>
  28. </run>
  29. </groups>
  30. </test>
  31. </suite>

然后在build.gradle中获得该文件中的内容:

[java] view plain copy

  1. test {
  2. useTestNG{
  3. suites(file(‘src/test/resources/org/gradle/testng.xml‘));
  4. }
  5. beforeTest { descriptor ->
  6. logger.lifecycle("Running test: " + descriptor)
  7. }
  8. onOutput { descriptor, event ->
  9. logger.lifecycle("Test: " + descriptor + " produced standard out/err: " + event.message )
  10. }
  11. }

重点就是useTestNG里的闭包代码,这就把testng.xml包含进来了。

[java] view plain copy

  1. D:\eclipse\workspare\TestNG_gradl>gradle clean test
  2. :clean
  3. :compileJava
  4. :processResources
  5. :classes
  6. :compileTestJava
  7. :processTestResources
  8. :testClasses
  9. :test
  10. Running test: test method aFastTest(org.gradle.SimpleTest)
  11. Test: test method aFastTest(org.gradle.SimpleTest) produced standard out/err: fa
  12. st test
  13. Running test: test method aFastTest1(org.gradle.SimpleTest)
  14. Test: test method aFastTest1(org.gradle.SimpleTest) produced standard out/err: f
  15. ast test1
  16. Running test: test method aFastTest2(org.gradle.SimpleTest)
  17. Test: test method aFastTest2(org.gradle.SimpleTest) produced standard out/err: f
  18. ast test2
  19. Running test: test method aFastTest3(org.gradle.SimpleTest)
  20. Test: test method aFastTest3(org.gradle.SimpleTest) produced standard out/err: f
  21. ast test3
  22. Running test: test method aFastTest1(org.gradle.SimpleTest1)
  23. Test: test method aFastTest1(org.gradle.SimpleTest1) produced standard out/err:
  24. fast test1
  25. BUILD SUCCESSFUL
  26. Total time: 5.741 secs
  27. D:\eclipse\workspare\TestNG_gradl>

测试报告如下:

时间: 2024-12-12 04:41:15

gradle-TestNG配置的相关文章

自动化测试框架selenium+java+TestNG——配置篇

最近来总结下自动化测试 selenium的一些常用框架测试搭配,由简入繁,最简单的就是selenium+java+TestNG了,因为我用的是java,就只是总结下java了. TestNG在线安装: 打开Eclipse   Help ->Install New Software ,   然后Add   "http://beust.com/eclipse" 选择TestNG,finish下一步完成安装. 验证是否安装成功 File->new->other 导入sele

gradle基础配置

gradle构建脚本基础 gradle常用命令 //列出项目的所有属性. 这样你就可以看到插件加入的属性以及它们的默认值. gradle properties ? //列出项目的所有任务 gradle -q tasks --all ? 字符串 ' ' 仅仅表示一个字符串 " " 字符串拼接,可以拼接变量变量,也可以拼接任务?$任务 ''' ''' 可以用来换行 定义常量 一个项目对应一个project实例,gradle根据build.gradle配置内容实例化project实例 pro

gradle 统一配置

gradle 统一配置 Android 当项目中要使用或者导入比较多的module的时候,为每一个module管理一些插件版本是很重复的一件事情 所以需要寻找一种能够对重复配置进行统一管理的方法 在project 根目录,新建 config.gradle文件 在这里配置你需要统一管理的元素 # ext 是必须的,且只能用这个名字 ext {  // Version of compile sdk  COMPILE_SDK_VERSION = 23  // Version of Android bu

Android Studio之gradle的配置与介绍

1.gradle的简单介绍 Gradle是可以用于Android开发的新一代的Build System,也是Android Studio默认的build工具.其实Gradle脚本是基于一种JVM语言- Groovy,再加上DSL组成的.由于Groovy是JVM语言,所以可以使用大部分的Java语言库.所谓DSL就是专门针对Android开发的插件,比如标准Gradle之外的一些新的方法(Method).闭包(Closure)等等.通过我们简单的了解知道Gradle的语法足够简洁和简单,而且可以使

Gradle仓库配置

Android Studio使用Gradle构建app.Gradle的使用非常灵活,其中可以设置使用多种类型的仓库,来获取应用中使用的库文件. 支持的类型有如下几种: 类型 说明 Maven central repository 这是Maven的中央仓库,无需配置,直接声明就可以使用.但不支持https协议访问 Maven JCenter repository JCenter中央仓库,实际也是是用的maven搭建的,但相比Maven仓库更友好,通过CDN分发,并且支持https访问. Maven

TestNG配置到Ecilipse中

TestNG 配置到Ecilipse中的方法.  有在线安装的方法,我在机房测试可以,但是在我自己的电脑上不好用. 下面这种方法是比较通用的. 1.打开http://beust.com/eclipse 2.下载zipped下的某一版本 3.将下载的压缩包site_assembly.zip解压到Eclipse下的dropin目录 4.重启Eclipse,new>>other->>打开TestNG,出现TestNG Class说明安装成功 原文地址:https://www.cnblog

android studio中使用 aar 和gradle 的配置

最近再帮朋友做一个app,其中用到了很多第三方的module,这样造成项目很大,很冗余,于是乎想把其转成jar来引用. jar 是我们都熟悉的,全名为java Archive  而 aar 的全名为 android Archive 顾名思义 aar 为android 使用库文件那具体怎么用呢 截图一张 在项目的module 中编译后的输出文件中就有aar 之后再把aar文件考到libs 文件下 再gradle 文件中配置引入即可.还是很简单的,顺便再记几个gradle中的配置方式(网上很多,想学

Gradle 模板配置

对于新手配置Gradle是一件很痛苦的事,记住二句话绝对搞定 1.在Gradle-->gradle-wrapper.properties中配置distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip  ;//这个是modle的版本 2.在build.gradle中更改classpath 'com.android.tools.build:gradle:2.2.2'  //这个是工具用到的版本 E

Android使用Gradle统一配置依赖版本

前言 目前的Android开发为了减少编译时间,开发效率,大多都采用模块化,组件化的开发方式. 采用这种方式不可避免的将会用到多个Library. 那么当我们协同开发时,如何处理每个人的版本统一呢? 我想大部分人应该都在使用Gradle来依赖管理,还没有使用的去面壁思过,Gradle使用起来简直太好用了,举个例子,我们想依赖个support-v4包,直接一句话: compile 'com.android.support:support-v4:25.1.0' 但是不知道你们发现一些问题没有?比如以

使用Android Studo开发NDK之Gradle的配置(能debug C代码)

配置: 用的版本号是AS1.5(也能够尝试更高版本号). Gradle地址是distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip NDK用的是CrystaX NDK 有參考:https://github.com/TsinStudio/AndroidDev/blob/master/Android%20NDK%20C%2B%2B%20开发利器:Android%20Studio.md 常见问题: 1.