鍍金池/ 教程/ Java/ TestNG套件測(cè)試
TestNG參數(shù)測(cè)試(DataProvider)
TestNG配置注解實(shí)例
TestNG預(yù)期異常測(cè)試
TestNG + Selenium負(fù)載測(cè)試
TestNG參數(shù)化測(cè)試
TestNG參數(shù)測(cè)試(XML和DataProvider)
TestNG配置注釋
TestNG套件測(cè)試
TestNG依賴測(cè)試
TestNG忽略測(cè)試
TestNG忽略測(cè)試
TestNG分組測(cè)試
TestNG預(yù)期異常測(cè)試
TestNG + Selenium
TestNG參數(shù)測(cè)試實(shí)例
TestNG超時(shí)測(cè)試
TestNG Hello World入門(mén)示例
JUnit 4 Vs TestNG比較
TestNG + Spring集成示例
TestNG分組測(cè)試
TestNG教程
TestNG超時(shí)測(cè)試
JUnit 4 Vs TestNG比較
TestNG基本注解
TestNG依賴性測(cè)試
TestNG套件測(cè)試
TestNG + Spring集成測(cè)試

TestNG套件測(cè)試

測(cè)試套件是用于測(cè)試軟件程序的行為或一組行為的測(cè)試用例的集合。 在TestNG中,我們無(wú)法在測(cè)試源代碼中定義一個(gè)套件,但它可以由一個(gè)XML文件表示,因?yàn)樘准菆?zhí)行的功能。 它還允許靈活配置要運(yùn)行的測(cè)試。 套件可以包含一個(gè)或多個(gè)測(cè)試,并由<suite>標(biāo)記定義。

<suite>testng.xml的根標(biāo)記。 它描述了一個(gè)測(cè)試套件,它又由幾個(gè)<test>部分組成。

下表列出了<suite>接受的所有定義的合法屬性。

屬性 描述
name 套件的名稱,這是一個(gè)強(qiáng)制屬性。
verbose 運(yùn)行的級(jí)別或詳細(xì)程度。
parallel TestNG是否運(yùn)行不同的線程來(lái)運(yùn)行這個(gè)套件。
thread-count 如果啟用并行模式(忽略其他方式),則要使用的線程數(shù)。
annotations 在測(cè)試中使用的注釋類型。
time-out 在本測(cè)試中的所有測(cè)試方法上使用的默認(rèn)超時(shí)。

在本教程中,我們將向您展示如何一起運(yùn)行多個(gè)TestNG測(cè)試用例(類),也稱為套件測(cè)試。

創(chuàng)建一個(gè)名稱為:SuiteTest 的項(xiàng)目,其結(jié)構(gòu)如下所示 -

1. 測(cè)試類

我們來(lái)看看以下三個(gè)測(cè)試類。

創(chuàng)建一個(gè)文件:TestConfig.java,其代碼如下所示 -

package com.yiibai;

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()");
    }

}

創(chuàng)建一個(gè)文件:TestDatabase.java,其代碼如下所示 -

package com.yiibai;

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");
    }

}

創(chuàng)建一個(gè)文件:TestOrder.java,其代碼如下所示 -

package com.yiibai;

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

要運(yùn)行上面的測(cè)試類,創(chuàng)建一個(gè)XML文件 - testng.xml(可以是任何文件名)文件,并定義以下內(nèi)容細(xì)節(jié):

<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestAll">

    <test name="order">
        <classes>
            <class name="com.yiibai.TestConfig" />
            <class name="com.yiibai.TestOrder" />
        </classes>
    </test>

    <test name="database">
        <classes>
            <class name="com.yiibai.TestConfig" />
            <class name="com.yiibai.TestDatabase" />
        </classes>
    </test>

</suite>

執(zhí)行上面代碼,得到如下結(jié)果 -

[TestNG] Running:
  F:\worksp\testng\SuiteTest\src\main\java\com\yiibai\testng.xml

testBeforeSuite()
testBeforeTest()
testFindOrder
testMakeEmptyOrder
testMakeOrder
testUpdateOrder
testAfterTest()
testBeforeTest()
testConnectMongoDB
testConnectMsSQL
testConnectMySQL
testConnectOracle()
testAfterTest()
testAfterSuite()

===============================================
TestAll
Total tests run: 8, Failures: 0, Skips: 0
===============================================

其他例子

這里有一些常用的例子。

3.1. 指定包名稱而不是類名稱:

創(chuàng)建一個(gè)XML文件:testng-1.xml,其代碼如下所示 -

<suite name="TestAll">

    <test name="order">
        <packages>
            <package name="com.yiibai.*" />
        </packages>
    </test>

</suite>

3.2. 指定包含或排除的方法,修改上面XML文件:testng-1.xml,其代碼如下所示 -

<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestAll">

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

</suite>

使用以上x(chóng)ml文件執(zhí)行測(cè)試,得到以下結(jié)果 -

[TestNG] Running:
  F:\worksp\testng\SuiteTest\src\main\java\com\yiibai\testng-1.xml

testBeforeSuite()
testBeforeTest()
testMakeOrder
testUpdateOrder
testAfterTest()
testAfterSuite()

===============================================
TestAll
Total tests run: 2, Failures: 0, Skips: 0
===============================================

3.3. 指定要包括或排除某個(gè)分組,創(chuàng)建一個(gè)XML文件:testng-2.xml,其代碼如下所示 -

<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestAll">

  <test name="database">
    <groups>
        <run>
            <exclude name="brokenTests" />
            <include name="db" />
        </run>
    </groups>

    <classes>
        <class name="com.yiibai.TestDatabase" />
    </classes>
  </test>

</suite>

使用以上x(chóng)ml文件執(zhí)行測(cè)試,得到以下結(jié)果 -

[TestNG] Running:
  F:\worksp\testng\SuiteTest\src\main\java\com\yiibai\testng-2.xml

testConnectMsSQL
testConnectOracle()

===============================================
TestAll
Total tests run: 2, Failures: 0, Skips: 0
===============================================