在IDEA中使用Gradle+TestNG进行自动化测试

上一篇 / 下一篇  2017-08-01 11:45:34 / 个人分类:自动测试工具

1、什么是TestNG?
   TestNG是一个开源的自动化测试框架,其灵感来源于Junit或Nunit。NG是next generation的缩写。它借鉴了Junit4和java注解来定义测试。其引入了许多新的创新功能,如依赖测试、分组概念,使测试更强大,更容易做到。它旨在涵盖所以的测试:单元、功能、端到端、集成等。

2、TestNG的特点是什么?
注解
TestNG使用Java和面向对象的功能
支持综合类测试(默认,不用创建一个新的测试每个测试方法的类的实例)
独立的编译时测试代码和运行时配置/数据信息
灵活的运行时配置
支持依赖测试方法,并行测试,负载测试
灵活的插件API
支持多线程测试
3、TestNG如何在IDEA工具中进行配置?
   IDEA工具默认自带了TestNG和Junit框架,但是默认并不包含在你的项目或者模块中。在使用之前需要先添加依赖,路径如下:
   JUnit libraries(junit.jar and junit-4.11.jar):<IntelliJ IDEA directory>\lib.
   TestNG library(testng-jdk15.jar):<IntelliJ IDEA directory>\plugins\testng\lib.
   具体操作包括:
   方式一:
   1、选择“文件”->"project structuor"
   2、选择Modules,选择“Dependencies”
   3、选择“Module source”,选择“+”号
   4、选择jar包,ok即可。
   方式二:
   1、选择“文件”->"project structuor"
   2、选择"Modules",选择“Dependencies”,删除所以的jar,选择“-”
   3、选择“Libraries”,选择“+”,选择java,选择project名称,例如test
   4、加载进来之后,选择右边的的class和souce等全部通过“-”删除掉;
   5、选择“+”,找到testNG的jar包位置,ok
   6、选择"Modules",查看“Dependencies”中有test工程名称,选择test之后,选择“+”->"Libray..."
   7、新页面选择“New Libray..”,选择test工程下面的libray;
   8、新页面选择classes和sources,ok即可。
  方式三:
   在build.gradle文件中dependencies下面增加
    compile'org.testng:testng:6.8.17'
4、什么是gradle?
   Gradle是一个基于Ant和Maven概念的项目自动化构建工具,它是通过Groovy来声明项目设置,而不是传统的XML.支持Java\Groovy和Scala语言。

5、Gradle和Ant和Maven的区别是什么呢?
   简单理解:
    ant可以自动化打包逻辑。
    maven也可以自动化打包,相比于ant,它多做的事是帮你下载依赖的jar包。
    gradle就是又能自动下jar包,又能自己写脚本,并且脚本写起来还比ant好用。
    
  Ant与Maven对于Gradle,前者编写容易,但功能有限,需要人工操作的过程也多;后者依托于庞大的依赖仓库,因此有着强大的外部依赖管理,但添加本地依赖并不方便,且项目不能灵活修改。而Gradle能很好地结合Ant与Maven各自的优点,可以随意的编写任务并组合成项目,直接利用Maven仓库,并且能很好的支持传递依赖和内部依赖。
   从以下角度分析:
   一、依赖管理角度:
      Maven依赖需要groupId、artifactId、version组成的唯一坐标进行标识,生成的包可以是Jar包,war包和ear包.
      Gradle进行了改进,非常整洁。
   2、Maven和Gradle对依赖项的scope有所不同。在Maven世界中,一个依赖项有6种scope,分别是complie(默认)、provided、runtime、test、system、import。而grade将其简化为了4种,compile、runtime、testCompile、testRuntime。
     3、Gradle支持动态的版本依赖。在版本号后面使用+号的方式可以实现动态的版本管理。
   二、多模块构建
      gradle对各个模块具有更强的定制化
   三、一致的项目结构
      gradel比Maven更优雅
   四、一致的构建模型
     gradle解决了Maven构建周期死板的问题,Gradle本身直接与项目构建周期是解耦的
 五、插件机制
    Gradle更简单,在于Maven是基于XML进行配置。所以其配置语法太受限于XML。即使实现很小的功能都需要设计一个插件,建立其与XML配置的关联。


6、如何IDEA配置gradle?
     IDEA默认是有gradle的,在新建项目的时候可以选择创建gradle项目,创建项目时选择java,创建完成后,工程结构包括:.gradle、.idea、build.gradle和setting.gradle文件。下面分别介绍下这几个文件。
    .gradle文件,gradle的相关支持文件,不用太关注
    .idea文件,IDEA工具的相关文件,不用太关注
     src,写代码的地方
     build.gradle,gradle的构建配置,这是我们要关心的,相当于Maven的pom.xml
     settings.gradle,设置项目的根目录

7、如何IDEA+gradle+TestNG进行代码编写?

   1、在src/test/java下面创建一个TestDemo.java文件,内容如下:
     
    public classTestDemo {
@BeforeClass
public voidsetUp() {
System.out.println("setUp");
}

@Test()
public voidaSlowTest() {
System.out.println("slow test");
}

@Test()
public voidaFastTest() {
System.out.println("fast test");
}
}
2、在build.gradle文件中增加
test {
useTestNG()
}
3、选择gradle面板,选择run gradle task,输入命令:clean test,点击ok
开始构建,构建console输出内容:
Testing started at 13:07 ...
13:07:15: Executing external tasks 'clean test'...
:clean
:compileJava NO-SOURCE
:processResources NO-SOURCE
:classes UP-TO-DATE
警告: [options] 未与 -source 1.7 一起设置引导类路径
1 个警告
:compileTestJava
:processTestResources NO-SOURCE
:testClasses
:test
setUp
fast test
slow test
BUILD SUCCESSFUL
Total time: 7.129 secs
13:07:22: External tasks execution finished 'clean test'.
4、查看gradle生成的html报告
 5、如何不想生成报告,怎么处理?增加下面红色部分就可以了。
     test {
useTestNG()
reports.html.enabled =false
}
8、TestNG注解和执行顺序是怎样的?
   前面java代码中使用了注解,例如@Test等,下面是常用的注解
  @beforeSuite (测试套件执行前执行一次,可以包括N个Java包,N个java类) 
   @beforeTest (介于测试套件suite和测试类之间的级别) 
   @beforeClass (测试类中的所有方法执行之前执行一次) 
   @beforeMethod (测试类中每个测试方法执行之前执行一次) 
   @Test (测试类) 
   @afterMethod(测试类中每个测试方法执行后执行一次) 
   @afterClass (测试类中所有方法执行后执行一次) 
   @afterTest (同beforTest) 
   @afterSuite (测试套件执行后执行一次,同beforeSuite)
   @Listeners 定义一个测试类的监听器。
   @Parameters 介绍如何将参数传递给@Test方法。
9、测试类@Test是否可以分组?
   答案是肯定的,在注解@Test后面加上(groups=”param”)进行分组,param为组名。举例:
   
    public class TestDemo {
@BeforeClass
public voidsetUp() {
System.out.println("setUp");
}

@Test(groups="slow")
public voidaSlowTest() {
System.out.println("slow test");
}

@Test(groups="fast")
public voidaFastTest() {
System.out.println("fast test");
}
}
10、分组后的测试类如何执行?
    由2种方法:一种是直接在build.gradle中配置进行调度,使用
     test {  
        useTestNG{  
       includeGroups 'slow' 
        }  
        } 
       配置完之后构建就可以了。查看报告回发现只有分组的测试类执行了。当然可以通过excludeGroups ‘fast’达到同样的效果;
    第二种方法是使用TestNG.xml进行配置,这种方法后续统一介绍;
11、分组后可以建立依赖关系。
    通过dependsOnGroups实现,例如,
    @Test(groups ="fast",dependsOnGroups="pass")
   组名为pass的所有方法执行结果成功才会执行方法fast,任何一个方法不成功,则不执行fast;

12、如何通过testNG.xml实现测试配置?
   1、创建一个testng.xml文件
    2、build.gradle中包含这个xml文件路径
      

   
   
   





   
   

TAG:

 

评分:0

我来说两句

Open Toolbar