Testng-custom-reporter

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

TestNG-カスタムレポーター

このセクションでは、カスタムレポーターを作成してTestNGにアタッチする方法を例とともに説明します。 カスタムレポータークラスを作成するには、拡張クラスでIReporterインターフェイスを実装する必要があります。 先に進み、カスタムレポーターでサンプルを作成しましょう。

テストケースクラスを作成する

*C:\> TestNG_WORKSPACE* に *SampleTest.java* などのJavaクラスを作成します。
import org.testng.Assert;
import org.testng.annotations.Test;

public class SampleTest {
   @Test
   public void testMethodOne() {
      Assert.assertTrue(true);
   }

   @Test
   public void testMethodTwo() {
      Assert.assertTrue(false);
   }

   @Test(dependsOnMethods = {"testMethodTwo"})
   public void testMethodThree() {
      Assert.assertTrue(true);
   }
}

上記のテストクラスには、実行時に_testMethodOne_と_testMethodThree_が合格する3つのテストメソッドが含まれていますが、_testMethodTwo_は、テストの真理条件に使用されるAssert.assertTrueメソッドに_false_ブール値を渡すことで失敗します。

カスタムレポートクラスを作成する

*CustomReporter.java* という名前の別の新しいクラスを *C:\> TestNG_WORKSPACE* に作成します。
import java.util.List;
import java.util.Map;

import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ISuiteResult;
import org.testng.ITestContext;
import org.testng.xml.XmlSuite;

public class CustomReporter implements IReporter{
   @Override
   public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
      String outputDirectory) {

     //Iterating over each suite included in the test
      for (ISuite suite : suites) {

        //Following code gets the suite name
         String suiteName = suite.getName();

        //Getting the results for the said suite
         Map<String, ISuiteResult> suiteResults = suite.getResults();
         for (ISuiteResult sr : suiteResults.values()) {
            ITestContext tc = sr.getTestContext();
            System.out.println("Passed tests for suite '" + suiteName +
               "' is:" + tc.getPassedTests().getAllResults().size());
            System.out.println("Failed tests for suite '" + suiteName +
               "' is:" + tc.getFailedTests().getAllResults().size());
            System.out.println("Skipped tests for suite '" + suiteName +
               "' is:" + tc.getSkippedTests().getAllResults().size());
         }
      }
   }
}

上記のクラスは、_org.testng.IReporter_インターフェースを実装します。 _IReporter_インターフェイスの_generateReport_メソッドの定義を実装します。 メソッドは3つの引数を取ります-

  • xmlSuite 。これは、実行中のtestng XMLで言及されているスイートのリストです。
  • suites 。テスト実行後のスイート情報が含まれます。 このオブジェクトには、パッケージ、クラス、テストメソッド、およびそれらのテスト実行結果に関するすべての情報が含まれています。
  • outputDirectory 。レポートが生成される出力フォルダーパスの情報が含まれます。

testng.xmlを作成する

*C:\> TestNG_WORKSPACE* にtestng.xmlを作成して、テストケースを実行します。
<?xml version = "1.0" encoding = "UTF-8"?>
<suite name = "Simple Reporter Suite">
   <listeners>
      <listener class-name = "CustomReporter"/>
   </listeners>

   <test name = "Simple Reporter test">
      <classes>
         <class name = "SampleTest"/>
      </classes>
   </test>
</suite>

javacを使用して、SampleTest、CustomReporterクラスをコンパイルします。

C:\TestNG_WORKSPACE>javac CustomReporter.java SampleTest.java

次に、testng.xmlを実行します。

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

出力を確認します。

===============================================
Simple Reporter Suite
Total tests run: 3, Failures: 1, Skips: 1
===============================================

Passed tests for suite 'Simple Reporter Suite' is:1
Failed tests for suite 'Simple Reporter Suite' is:1
Skipped tests for suite 'Simple Reporter Suite' is:1

上記の例は、単純なカスタムレポーターを示しています。このレポートは、テストの実行に含まれる各スイートの失敗したテスト、合格したテスト、およびスキップされたテストの数をコンソールに出力します。 Reporterは、主にテスト実行の最終レポートを生成するために使用されます。 この拡張機能を使用して、レポートの要件に応じてXML、HTML、XLS、CSV、またはテキスト形式のファイルを生成できます。