TestNG – 複数のテストクラスを実行する(スイートテスト)

このチュートリアルでは、複数の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]