testng-suite-test、幅= 604、高さ= 417

このチュートリアルでは、複数のTestNGテストケース(クラス)を一緒に実行する方法(スイートテストともいう)について説明します。

1.テストクラス

次の3つのテストクラスを検討してください。

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

上記のテストクラスを実行するには、

testng.xml

(任意のファイル名でも可)というXMLファイルを作成し、次のような詳細を定義します:

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>

出力

…​.[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.その他の例

一般的な使用例を次に示します。

**  3.1 ** クラス名の代わりにパッケージ名を指定する:

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 ** インクルードまたは除外するメソッドを指定する:

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>

出力

....[TestNG]Running:
  C:\mkyong__projects\TestNG\src\test\resources\testng.xml

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

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>

出力

…​.[TestNG]Running:
C:\mkyong__projects\TestNG\src\test\resources\testng.xml

testConnectMsSQL
testConnectOracle()

=== 参考文献

.  http://testng.org/doc/documentation-main.html#testng-xml[TestNG  -

testng.xmlファイル]

link://tag/suite-test/[スイートテスト]link://tag/testng/[testng]