Testng-group-test
TestNG-グループテスト
グループテストはTestNGの新しい革新的な機能であり、JUnitフレームワークには存在しません。 メソッドを適切な部分にディスパッチし、テストメソッドの高度なグループ化を実行できます。
グループに属するメソッドを宣言できるだけでなく、他のグループを含むグループを指定することもできます。 次に、TestNGを呼び出して、特定のグループセット(または正規表現)を含めるように要求し、別のセットを除外することができます。
グループテストは、テストの分割方法に最大限の柔軟性を提供します。2つの異なるテストセットを連続して実行する場合、何も再コンパイルする必要はありません。
グループは、<groups>タグを使用してtestng.xmlファイルで指定されます。 <test>または<suite>タグの下にあります。 <suite>タグで指定されたグループは、その下のすべての<test>タグに適用されます。
次に、グループテストの動作を確認する例を見てみましょう。
クラスを作成する
- C:\> TestNG_WORKSPACE に MessageUtil.java などのテスト対象のJavaクラスを作成します。
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
//Constructor
//@param message to be printed
public MessageUtil(String message) {
this.message = message;
}
//prints the message
public String printMessage() {
System.out.println(message);
return message;
}
//add "finddevguides" to the message
public String salutationMessage() {
message = "finddevguides" + message;
System.out.println(message);
return message;
}
//add "www." to the message
public String exitMessage() {
message = "www." + message;
System.out.println(message);
return message;
}
}
テストケースクラスを作成する
GroupTestExample.javaなどのJavaテストクラスを作成します。
テストメソッドtestPrintMessage()およびtestSalutationMessage()をテストクラスに追加します。
2つのカテゴリにテスト方法をグループ化します-
チェックインテスト(checkintest)-新しいコードを送信する前に、これらのテストを実行する必要があります。 通常は高速で、基本的な機能が壊れていないことを確認してください。
機能テスト(functest)-これらのテストは、ソフトウェアのすべての機能をカバーし、少なくとも1日に1回実行する必要がありますが、理想的には継続的に実行することをお勧めします。
*GroupTestExample.java* という名前のJavaクラスファイルを *C:\> TestNG_WORKSPACE* に作成します。
import org.testng.Assert;
import org.testng.annotations.Test;
public class GroupTestExample {
String message = ".com";
MessageUtil messageUtil = new MessageUtil(message);
@Test(groups = { "functest", "checkintest" })
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
message = ".com";
Assert.assertEquals(message, messageUtil.printMessage());
}
@Test(groups = { "checkintest" })
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "finddevguides" + ".com";
Assert.assertEquals(message, messageUtil.salutationMessage());
}
@Test(groups = { "functest" })
public void testingExitMessage() {
System.out.println("Inside testExitMessage()");
message = "www." + "finddevguides"+".com";
Assert.assertEquals(message, messageUtil.exitMessage());
}
}
testng.xmlを作成する
テストケースを実行するには、 C:\> TestNG_WORKSPACE にtestng.xmlを作成します。 ここでは、グループ_functest_に属するテストのみを実行します。
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<groups>
<run>
<include name = "functest"/>
</run>
</groups>
<classes>
<class name = "GroupTestExample"/>
</classes>
</test>
</suite>
javacを使用して、MessageUtil、テストケースクラスをコンパイルします。
C:\TestNG_WORKSPACE>javac MessageUtil.java GroupTestExample.java
次に、testng.xmlを実行します。これは、グループ_functest_に属しているため、メソッドtestPrintMessage()のみを実行します。
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
出力を確認します。 メソッドtestPrintMessage()のみが実行されます。
Inside testPrintMessage()
.com
Inside testExitMessage()
www..com
===============================================
Suite1
Total tests run: 2, Failures: 1, Skips: 0
===============================================
グループのグループ
グループには他のグループを含めることもできます。 これらのグループは MetaGroups と呼ばれます。 たとえば、_checkintest_および_functest_を含むグループ_all_を定義できます。 次のようにtestng.xmlファイルを変更しましょう-
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<groups>
<define name = "all">
<include name = "functest"/>
<include name = "checkintest"/>
</define>
<run>
<include name = "all"/>
</run>
</groups>
<classes>
<class name = "GroupTestExample"/>
</classes>
</test>
</suite>
上記のtestng.xmlを実行すると、3つのテストすべてが実行され、次の結果が得られます-
Inside testPrintMessage()
.com
Inside testSalutationMessage()
finddevguides.com
Inside testExitMessage()
www.finddevguides.com
===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================
除外グループ
以下に示すように、<exclude>タグを使用してグループを無視できます-
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<groups>
<define name = "all">
<exclude name = "functest"/>
<include name = "checkintest"/>
</define>
<run>
<include name = "all"/>
</run>
</groups>
<classes>
<class name = "GroupTestExample"/>
</classes>
</test>
</suite>