Testng-group-test

提供:Dev Guides
移動先:案内検索

TestNG-グループテスト

グループテストはTestNGの新しい革新的な機能であり、JUnitフレームワークには存在しません。 メソッドを適切な部分にディスパッチし、テストメソッドの高度なグループ化を実行できます。

グループに属するメソッドを宣言できるだけでなく、他のグループを含むグループを指定することもできます。 次に、TestNGを呼び出して、特定のグループセット(または正規表現)を含めるように要求し、別のセットを除外することができます。

グループテストは、テストの分割方法に最大限の柔軟性を提供します。2つの異なるテストセットを連続して実行する場合、何も再コンパイルする必要はありません。

グループは、<groups>タグを使用してtestng.xmlファイルで指定されます。 <test>または<suite>タグの下にあります。 <suite>タグで指定されたグループは、その下のすべての<test>タグに適用されます。

次に、グループテストの動作を確認する例を見てみましょう。

クラスを作成する

  • C:\> TestNG_WORKSPACEMessageUtil.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>