前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TestNG Suites Example(java单元测试组件例子)

TestNG Suites Example(java单元测试组件例子)

作者头像
明明如月学长
发布2021-08-27 15:30:15
4160
发布2021-08-27 15:30:15
举报

【本系列其他教程正在陆续翻译中,点击分类:TestNG进行查看。】  

 【翻译 by 明明如月 QQ 605283073】

原文:http://websystique.com/java/testing/testng-suites-example/

上一篇:TestNG Groups 例子

本文将讲述TestNG Suite 测试,一个Suite(套件)在 TestNG 中通过一个叫testng.xml的XML文件表示。

使用 TestNG的每个测试方法都是套件的一部分。

在TestNG中一个套件通过一个通常命名为testng.xml的XML文件表示。

 标签是此xml的第一个标签,代表一个套件,它里面可以包含

标签。每一个标签相应的也可能含有一个或者多个。

,  标签。

当TestNG 执行一个套件,他主要先读取此xml内容然后根据xml定义的情况进行执行。

testng.xml 的例子

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests" parallel="tests" thread-count="2">
     
    <test name="front-end">
        <packages>
            <package name="com.websystique.testng.frontend.*" />
        </packages>
    </test>
 
    <test name="back-end">
        <packages>
            <package name="com.websystique.testng.backend.*" />
        </packages>
    </test>
 
</suite>

标签有两个带有name的值‘front-end’ & ‘back-end’。

每个标签都包含指定的包名。当TestNG想运行此套件时,将检查这些包,获得需要运行的

测试类和方法。

在这种情况下 front-end 和back-end 测试可以平行运行。

注意:套件的每一个分类如front-end  将通过单独的一个线程运行。

更多Suite(套件)例子

1)执行所有测试:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests">
     
    <test name="full">
        <packages>
            <package name="com.websystique.*" />
        </packages>
    </test>
 
</suite>

2)执行除 ui group外的所有测试

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests">
 
    <test name="backend">
        <groups>
            <run>
                <exclude name="ui" />
            </run>
        </groups>
        <packages>
            <package name="com.websystique.*" />
        </packages>
    </test>
 
</suite>

2)执行除ui group外的所有测试(用类代替包)

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests">
 
    <test name="backend">
        <groups>
            <run>
                <exclude name="ui" />
            </run>
        </groups>
        <classes>
            <class name="com.websystique.testng.TestCalculator" />
        </classes>
    </test>
 
</suite>

套件 & 测试标签级注解:

@BeforeSuite, @AfterSuite

@BeforeSuite

注解的方法将在套件内什么的任何测试方法执行前被执行一次。

这比较适合设置或者初始化多个分组共有的环境。

 @AfterSuite

注解的方法将在套件内什么的任何测试方法执行后被执行一次。

这比较适合设置或者初始化多个分组共有的环境。

@BeforeTest, @AfterTest

@BeforeTest将在 带有标签的任何方法执行之前执行一次。

@AfterTest则与之相反。

完整的例子

创建 testNG.xml 

src/test/resources/testNG.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="fulltests">
  
    <test name="front-end">
        <classes>
            <class name="com.websystique.testng.TestUI" />
        </classes>
    </test>
  
    <test name="back-end">
        <classes>
            <class name="com.websystique.testng.TestSecurity" />
            <class name="com.websystique.testng.TestDataBase" />
            <class name="com.websystique.testng.TestBackendConfig" />
        </classes>
    </test>
 
</suite>
代码语言:javascript
复制
package com.websystique.testng;
 
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
 
public class TestUI {
 
    @BeforeTest
    public void beforeTest() {
        System.out.println("@BeforeTest");
    }
  
    @AfterTest
    public void afterTest() {
        System.out.println("@AfterTest\n");
    }
     
    @Test(groups= "ui")
    public void openConfirmationDialog() {
        System.out.println("openConfirmationDialog()");
    }
 
    @Test(groups= "ui")
    public void openFileDialog() {
        System.out.println("openFileDialog()");
    }
 
}
代码语言:javascript
复制
package com.websystique.testng;
 
import org.testng.annotations.Test;
 
public class TestSecurity {
     
    @Test(groups= "security")
    public void accessHomePage() {
        System.out.println("accessHomePage()");
    }
 
    @Test(groups= "security")
    public void accessAdminPage() {
        System.out.println("accessAdminPage()");
    }
 
}
代码语言:javascript
复制
package com.websystique.testng;
 
import org.testng.annotations.Test;
 
public class TestDataBase {
 
    @Test(groups= "database")
    public void testInsert(){
        System.out.println("testInsert()");
    }
     
    @Test(groups= "database")
    public void testUpdate(){
        System.out.println("testUpdate()");
    }
 
    @Test(groups= "database")
    public void testDelete(){
        System.out.println("testDelete()");
    }
 
}
代码语言:javascript
复制
package com.websystique.testng;
 
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
 
public class TestBackendConfig {
 
    @BeforeSuite
    public void beforeSuite() {
        System.out.println("@BeforeSuite\n");
    }
  
    @AfterSuite
    public void afterSuite() {
        System.out.println("@AfterSuite");
    }
     
    @BeforeTest
    public void beforeTest() {
        System.out.println("@BeforeTest");
    }
  
    @AfterTest
    public void afterTest() {
        System.out.println("@AfterTest\n");
    }
     
}

右键  testng.xml,  Run As–>TestNG Suites

执行结果:

代码语言:javascript
复制
@BeforeSuite
 
@BeforeTest
openConfirmationDialog()
openFileDialog()
@AfterTest
 
@BeforeTest
accessAdminPage()
accessHomePage()
testDelete()
testInsert()
testUpdate()
@AfterTest
 
@AfterSuite
 
===============================================
fulltests
Total tests run: 7, Failures: 0, Skips: 0
===============================================
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/05/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 套件 & 测试标签级注解:
  • 完整的例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档