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]