关于TestNG,也是一边学一边总结,对于TestNG和Junit的比较其实也没有什么意义,都是一种测试框架,都是为了应用而生的东西,没有必要说谁好谁不好了。用的熟练用的好就是真的好啊。

下面简单的总结了些关于TestNG的基本使用方法,如果说的不明白或者有错误的地方,还望大家不要手下留情了。尽情拍砖,使劲的拍。。。。

首先我们得了解一下关于TestNG的几种注释方法(都是从官网上翻译的,有问题迫切希望大家指正),了解以后往下走会越来越顺的。

@BeforeSuite(执行集合之前执行的方法,它的优点我觉得应该体现在运行配置文件的时候,同时添加多个class,然后让有关的class同时运行进行测试)

@AfterSuite(执行完所有的测试集合以后运行的方法)

@BeforeClass(当前所在类的测试带@Test注释的方法运行之前运行一次)

@AfterClass  (当前所在类的测试全部运行完以后运行一次)

@BeforeTest (带有@Test注释的方法运行之前都会运行一次beforeTest中的方法)

@AfterTest (带有@Test注释的方法运行之后都会运行一次afterTest中的方法)

@BeforeMethond(在每个测试的方法之前运行一次)

@AfterMethond(在每个测试的方法运行之后运行一侧)

@BeforeGroups(结合在配置文件中使用,每个组运行之前运行一次)

@AfterGroups(结合在配置文件中使用,每个组运行之后运行一次)

@Test(表明这是一个测试用例的方法)

 

上面个都是一些最基本的注释方法,接下来可以看到稍微复杂点的注释,就是关于参数化和监控之类的注释:

@Listeners(相当于监控类,主要监控suite method 之类的相关动作,它主要是实现ISuiteListener,ITestListener,IInvokedMethodListener这三个对象,然后重写他们的相关方法)

@DataProvider(数据提供,以数组的形式来提供数据,实现数据的参数化)

@Parameters (结合配置文件来提供数据,实现数据的参数化)

我门在学习TestNG时,其实TestNG最大的优点我觉得应该体现在它的Suite XML文件上,如果我们想同时运行几个测试类,这个时候我们不需要像JUnit那样在类里面定义Suite类了,TestNG将Suite从类里面分离出来了,它是直接写在一个XML文件中的。

为了更好的理解上面几种注释方法,下面直接在Suite XML配置文件中定义来对他们进行了解,我觉得这样理解起来或许会更快一点。

首先我们看看Suite XML文件的基本格式:

<!-- suite name 自己定义,没有任何限制  -->
<suite name="xxx">
<!-- test name 也是自己定义的,名称不做任何限制 -->
<test name="xxx">
<!-- classes name 也是自己定义的,名称不做任何限制 -->
<classes name="xxx">
<!-- 可以添加多个class,然后同时运行这几个测试类-->
<class name="packageName.className1"/>
<class name="packageName.classNam2"/>
</classes>
</test>
</suite>

Group的使用(结合下面的代码可以看出,当运行suiteXML文件的时候只有在组里面的测试用例才能被执行,在运行这个测试之前就会调用@BeforeGroups中的方法,运行完这个测试之后就会运行@AfterGroups这个方法)

@Test(groups={"test1"})
public void testMethond6(){ System.out.println("testMethond6");
} @Test (groups={"test2"})
public void testMethond7(){ System.out.println("tsetMethond7"); }

Suite XML 文件:

<suite name="xxx">
<test name="xxx">
<gropus name="xxx">
<run>
<include name="test1" />
</run>
</groups>
<classes name="xxx>
<class name="className"> </class>
</classes>
</test>
</suite>

当我们运行上面的Suite XML文件的时候,只有被定义为test1的Group,方法“testMethond6”才会被执行,通过Group的控制,我们可以自定义一个测试类中需要运行的方法。

关于DataProvider的使用(通过下面的代码展现):

定义好DataProvider,然后将数据以数组的形式写到数组里面,在测试方法中直接调用DataProvider中定义好的数据:

@DataProvider(name="data1")
public static Object[][] getData(){ return new Object[][] {{"user1","password1"},{"user2","password2"},{"user3","password3"}}; } @Test(dataProvider="data1")
public void testMethond8(String userName, String password){ System.out.println("The UserName is:"+userName);
System.out.println("The Password is:"+password); }

关于参数化(Parameters)的使用,在suiteXML文件中定义好数据,然后直接通过value-key对应的方式得到相关的数据。

@Test
@Parameters({"username","password"})
public void testMethond9(String userName, String password){ System.out.println("The UserName is:"+userName);
System.out.println("The Password is:"+password); }

Suite XML:

<suite name="testNG2">
<paremeter name="username", value="liangtao1"></paremeter>
<paremeter name="password",value="password1"></paremeter>
<paremeter name="username", value="liangtao2"></paremeter>
<paremeter name="password",value="password2"></paremeter>
<test name="testNG2">
<classes>
<class name="study.testNG.TestListener"></class>
</classes>
</test>
</suite>

最新文章

  1. UML大战需求分析——阅读笔记03
  2. 挑战程序2.1.4 穷竭搜索&gt;&gt;深度优先搜索
  3. 【转】七年IT经验的七个总结
  4. SSL/TLS 协议详解
  5. Mysql存储日期类型用int、timestamp还是datetime?
  6. linux 压缩文件 及压缩选项详解
  7. HDU 1269 迷宫城堡 【强联通分量(模版题)】
  8. 关于winform主题IrisSkin2的编写
  9. 什么是流利语法Fluent Syntax
  10. [bzoj4850][Jsoi2016]灯塔
  11. Android监测手指上下左右滑动屏幕
  12. mybatis支持jdk8等localdate类型
  13. 用JavaScript制作简单的计算器
  14. Linux系统编程——信号
  15. Pycharm2018的激活方法或破解方法(必须加host)
  16. Hbase多版本的读写(Shell&amp;Java API版)
  17. 简单记录下3PC
  18. day python calss08 深浅copy
  19. 122. Best Time to Buy and Sell Stock II (Array;Greedy)
  20. Daily Scrum (2015/11/2)

热门文章

  1. metamask源码学习-controllers-network
  2. Linux系统--命令行安装weblogic10.3.6
  3. leetcode 131. Palindrome Partitioning 、132. Palindrome Partitioning II
  4. 【转】Kaggle注册问题-验证码和手机短信
  5. 关于ELK
  6. pacman详解及常见问题
  7. 【Codeforces Round 464】Codeforces #265 (Div. 1)
  8. JAVA体系的线程的实现,线程的调度,状态的转换
  9. JavaScript 格式化数字 - 转
  10. 微信小程序开发需要注意的30个坑