In this tutorial, we will show you how to run multiple TestNG test cases (classes) together, aka suite test.

1. Test Classes

Review following three test classes.

TestConfig.java
package com.mkyong.testng.examples.suite;

import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest; //show the use of @BeforeSuite and @BeforeTest
public class TestConfig { @BeforeSuite
public void testBeforeSuite() {
System.out.println("testBeforeSuite()");
} @AfterSuite
public void testAfterSuite() {
System.out.println("testAfterSuite()");
} @BeforeTest
public void testBeforeTest() {
System.out.println("testBeforeTest()");
} @AfterTest
public void testAfterTest() {
System.out.println("testAfterTest()");
} }
TestDatabase.java
package com.mkyong.testng.examples.suite;

import org.testng.annotations.Test;

public class TestDatabase {

	@Test(groups = "db")
public void testConnectOracle() {
System.out.println("testConnectOracle()");
} @Test(groups = "db")
public void testConnectMsSQL() {
System.out.println("testConnectMsSQL");
} @Test(groups = "db-nosql")
public void testConnectMongoDB() {
System.out.println("testConnectMongoDB");
} @Test(groups = { "db", "brokenTests" })
public void testConnectMySQL() {
System.out.println("testConnectMySQL");
} }
TestOrder.java
package com.mkyong.testng.examples.suite;

import org.testng.annotations.Test;

public class TestOrder {

	@Test(groups={"orderBo", "save"})
public void testMakeOrder() {
System.out.println("testMakeOrder");
} @Test(groups={"orderBo", "save"})
public void testMakeEmptyOrder() {
System.out.println("testMakeEmptyOrder");
} @Test(groups="orderBo")
public void testUpdateOrder() {
System.out.println("testUpdateOrder");
} @Test(groups="orderBo")
public void testFindOrder() {
System.out.println("testFindOrder");
} }
 

2. Testng.xml

To run above test classes, create a XML file – testng.xml (can be any filename) file, and define detail like this :

testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestAll">

	<test name="order">
<classes>
<class name="com.mkyong.testng.examples.suite.TestConfig" />
<class name="com.mkyong.testng.examples.suite.TestOrder" />
</classes>
</test> <test name="database">
<classes>
<class name="com.mkyong.testng.examples.suite.TestConfig" />
<class name="com.mkyong.testng.examples.suite.TestDatabase" />
</classes>
</test> </suite>

Output

[TestNG] Running:
C:\mkyong_projects\TestNG\src\test\resources\testng-all.xml testBeforeSuite() testBeforeTest()
testFindOrder
testMakeEmptyOrder
testMakeOrder
testUpdateOrder
testAfterTest() testBeforeTest()
testConnectMongoDB
testConnectMsSQL
testConnectMySQL
testConnectOracle()
testAfterTest() testAfterSuite()
 

3. Other Examples

Here are some common use examples.

3.1 Specify package names instead of class names:

testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestAll">

	<test name="order">
<packages>
<package name="com.mkyong.testng.examples.suite.*" />
</packages>
</test> </suite>

3.2 Specify methods to include or exclude :

testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestAll">

  <test name="order">
<classes>
<class name="com.mkyong.testng.examples.suite.TestConfig" />
<class name="com.mkyong.testng.examples.suite.TestOrder">
<methods>
<include name="testMakeOrder" />
<include name="testUpdateOrder" />
<!--
<exclude name="testMakeOrder" />
-->
</methods>
</class>
</classes>
</test> </suite>

Output

[TestNG] Running:
C:\mkyong_projects\TestNG\src\test\resources\testng.xml testBeforeSuite()
testBeforeTest()
testMakeOrder
testUpdateOrder
testAfterTest()
testAfterSuite()

3.3 Specify groups to include or exclude :

testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestAll">

  <test name="database">
<groups>
<run>
<exclude name="brokenTests" />
<include name="db" />
</run>
</groups> <classes>
<class name="com.mkyong.testng.examples.suite.TestDatabase" />
</classes>
</test> </suite>

Output

[TestNG] Running:
C:\mkyong_projects\TestNG\src\test\resources\testng.xml testConnectMsSQL
testConnectOracle()

 

According to the TestNG dtd, the exclude element is only applicable to the following elements:

  • package - The package description within packages list.
  • methods - The list of methods to include/exclude from this test.
  • run - The subtag of groups used to define which groups should be run.

The elements cl*** and class cannot be directly excluded; however, you can exclude cl*** through groups:

@Test(groups = { "ClassTest1" })
public class Test1 { public void testMethod1() {
} public void testMethod2() {
} }

Then you will define the testng.xml:

<suite>
<test>
<groups>
<run>
<exclude name="ClassTest1"/>
</run>
</groups>
<cl***>
<class name="Test1">
</cl***>
</test>
</suite>

TestNG – Run multiple test classes (suite test)的更多相关文章

  1. PHPFarm - How to run multiple versions of PHP on the same computer

    How to Run Multiple Versions of PHP on One Server 转载:http://www.sitepoint.com/run-multiple-versions- ...

  2. 【转帖】如何在redhat单机服务器上运行postgresql的多个实例(howto run multiple postgresql instance on one redhat server)

    Running multiple PostgreSQL 9.2 Instances on one server in CentOS 6/RHEL 6/Fedora 原帖网站速度很慢,故转帖在此 Thi ...

  3. Run Multiple Webpack Configs Sequentially

    https://www.viget.com/articles/run-multiple-webpack-configs-sequentially/ const path = require('path ...

  4. Spark机器学习· 实时机器学习

    Spark机器学习 1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors. ...

  5. Spark机器学习9· 实时机器学习(scala with sbt)

    1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors.消息队列.Flume ...

  6. ExtentReports 结合 TestNg 生成自动化 html 报告 (支持多 suite)

    转载:https://testerhome.com/topics/8134 重要说明:报告监听器源码修复一些bug,不再此处更新代码,最新代码可以到github查看最新报告监听器源码 前几天分享了ht ...

  7. testng 执行多个suite

    我们知道testng的配置文件,一个.xml里面只能有一个suite,那么如果想要设置多个suite怎么弄呢?这个时候我们需要用到testng的标签<suite-files>. 下面说一下 ...

  8. testng执行多个suite

    由于testng.xml中只能设置一个<suite>标签,就无法创建多个测试集,通过<suite-files >标签可以实现允许多个测试集. 1.testng.xml中引入多个 ...

  9. TestNG Suite 运行出现中文乱码如何解决

    场景: 用TestNG框架运行测试类,控制台视图输出出现中文乱码. 解决方案: 1.eclipse属性>workspace>other>utf-8 2.修改eclipse.ini 文 ...

随机推荐

  1. Mac版有道云笔记不能自动同步

    删除本地资源文件夹 /Users/xxxx/Library/Containers/com.youdao.note.YoudaoNoteMac 直接删除整个文件夹,之后重新登录账号.

  2. 九度oj 题目1028:继续畅通工程

    题目描述:     省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用 ...

  3. [BZOJ1419] Red is good(期望DP)

    传送门 逆推 只不过顺序还是顺着的,思想是逆着的 f[i][j]表示还剩下i张红牌,j张黑牌的期望值 那么边界是 f[i][0]=i,因为只剩i张红牌 f[0][j]=0,只剩黑牌,显然直接停止最优 ...

  4. Aragorn's Story(hdu3966)

    题意:给一棵树,并给定各个点权的值,然后有3种操作: I C1 C2 K: 把C1与C2的路径上的所有点权值加上K D C1 C2 K:把C1与C2的路径上的所有点权值减去K Q C:查询节点编号为C ...

  5. 开店 BZOJ 4012

    开店 [问题描述] 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱.这样的想法当然非常好啦,但是她们也发现她们面临 ...

  6. 封装的一个Worker方法,利用线程处理运行时间较长的js代码

    function webWorker(targetFile,content){ var promise=new Promise(function(resolve,reject){ var web=ne ...

  7. 使用<sstream> 替代<stdio.h>

    c++ 字符串流 sstream(常用于格式转换)   使用stringstream对象简化类型转换C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更 ...

  8. [UIScreen mainScreen].applicationFrame与[UIScreen mainScreen].bounds区别

    [UIScreen mainScreen].applicationFrame与[UIScreen mainScreen].bounds区别: applicationFrame会自动判断是否存在状态栏, ...

  9. android的系统学习

    先从Android的应用开发开始,等到对应用掌握的比较熟悉了,开始慢慢阅读一些Android 应用框架层的源代码,然后再渐渐往下去了解Android的JNI.Libraries.Dalvik虚拟机.H ...

  10. 9.Java web—JSP内置对象

    容器内置了9大对象,这些对象在jsp页无需实例化,可以直接使用. 分别为request. response .session. application .out. pageContext .confi ...