TestNG – 設定注釈の例
TestNGでは、データベースのセットアップ/クリーン、ダミーデータの準備、サーバーのデプロイ/シャットダウンなどのテストクラスの構成を行うために、次のアノテーションを使用できます。
@BeforeSuite - For suite test, run before all tests in this suite have run. @AfterSuite - For suite test, run after all tests in this suite have run. @BeforeTest - For suite test, run before any test method belonging to the classes inside the <test> tag is run. @AfterTest - For suite test, run after all the test methods belonging to the classes inside the <test> tag have run. @BeforeGroups: Run before the first test method that belongs to the group is invoked. @AfterGroups: Run after the last test method that belongs to the groups is invoked. @BeforeClass - Run before the first test method in the current class is invoked. @AfterClass - Run after all the test methods in the current class have been run. @BeforeMethod - Run before each test method. @AfterMethod - Run after each test method.
__P.Sスイートテスト – 複数のテストクラスを一緒に実行します。
次の例を見て、実行順序を確認します。どのメソッドが最初に呼び出され、次にどのメソッドが呼び出されます。
1.単一テストクラス
1つのテストケースを実行し、
group
、` class`、 `method`の前後の使用を示します。
TestConfiguration.java
package com.mkyong.testng.examples.configuration; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterGroups; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeGroups; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class TestConfiguration { @BeforeGroups("shopping") public void beforeGroups() { System.out.println("@BeforeGroups"); } @AfterGroups("shopping") public void afterGroups() { System.out.println("@AfterGroups"); } @BeforeClass public void beforeClass() { System.out.println("@BeforeClass"); } @AfterClass public void afterClass() { System.out.println("@AfterClass"); } @BeforeMethod public void beforeMethod() { System.out.println("@BeforeMethod"); } @AfterMethod public void afterMethod() { System.out.println("@AfterMethod"); } @Test(groups = "shopping") public void runTest1() { System.out.println("@Test - runTest1"); } @Test public void runTest2() { System.out.println("@Test - runTest2"); } }
出力
@BeforeClass @BeforeGroups @BeforeMethod @Test - runTest1 @AfterMethod @AfterGroups @BeforeMethod @Test - runTest2 @AfterMethod @AfterClass PASSED: runTest1 PASSED: runTest2 =============================================== Default test Tests run: 2, Failures: 0, Skips: 0 ===============================================
2.スイートテストのクラス
suite`と
test`の前後の使用を示す2つのテストクラスを作成します。
DBConfig.java
package com.mkyong.testng.examples.configuration; import org.testng.annotations.AfterSuite; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; public class DBConfig { @BeforeSuite() public void beforeSuite() { System.out.println("@BeforeSuite"); } @AfterSuite() public void afterSuite() { System.out.println("@AfterSuite"); } @BeforeTest() public void beforeTest() { System.out.println("@BeforeTest"); } @AfterTest() public void afterTest() { System.out.println("@AfterTest"); } }
TestDBConnection.java
package com.mkyong.testng.examples.configuration; import org.testng.annotations.Test; public class TestDBConnection { @Test public void runOtherTest1() { System.out.println("@Test - runOtherTest1"); } @Test public void runOtherTest2() { System.out.println("@Test - runOtherTest2"); } }
複数のテストケースを一緒に実行するXMLファイルを作成します。 XMLコメントを読んでください。
testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <!-- @BeforeSuite --> <suite name="TestAll"> <!-- @BeforeTest --> <test name="case1"> <classes> <class name="com.mkyong.testng.examples.configuration.TestConfiguration"/> <class name="com.mkyong.testng.examples.configuration.TestDBConnection"/> <class name="com.mkyong.testng.examples.configuration.DBConfig"/> </classes> </test> <!-- @AfterTest --> <!-- @BeforeTest --> <test name="case2"> <classes> <class name="com.mkyong.testng.examples.configuration.TestDBConnection"/> <class name="com.mkyong.testng.examples.configuration.DBConfig"/> </classes> </test> <!-- @AfterTest --> </suite> <!-- @AfterSuite -->
出力
@BeforeSuite @BeforeTest //Start {case1} @BeforeClass @BeforeGroups @BeforeMethod @Test - runTest1 @AfterMethod @AfterGroups @BeforeMethod @Test - runTest2 @AfterMethod @AfterClass @Test - runOtherTest1 @Test - runOtherTest2 @AfterTest //End {case1} @BeforeTest //Start {case2} @Test - runOtherTest1 @Test - runOtherTest2 @AfterTest //End {case2} @AfterSuite =============================================== TestAll Total tests run: 6, Failures: 0, Skips: 0 ===============================================
完了しました。
参考文献
-
link://unittest/testng-tutorial-5-suite-test/[TestNG – 複数を実行する
テストクラス(スイートテスト)]