2

テスト ケース スイートの実行から TestNG レポートを生成しようとしています。このテスト ケースは、1 回目または 2 回目の実行で失敗した場合に備えて、最大 3 回実行できます。私が生成できるレポートには、最後の実行と結果のみが表示されます。私がやりたいことは、すべての実行を表示するレポートを生成することです。そのため、テスト ケースが 3 回実行された場合、レポートには 3 回リストされます。これは私がこれまでに持っているコードです:

 LinkedList<Map<String, ISuiteResult>> componentResults = new LinkedList<Map<String, ISuiteResult>>();
 LinkedHashMap<String, String> testNames = new LinkedHashMap<String, String>();
 List<String> mustPassTests = getMustPass(testSuite);
 Map<String, ISuiteResult> r = testSuite.getResults();
 componentResults.add(r);


    for(ISuiteResult r2 : r.values()) {

        ITestContext testContext = r2.getTestContext();

        String testName = testContext.getName();

        ITestNGMethod[] methods = testContext.getAllTestMethods();
        Calendar startCal = Calendar.getInstance();
        startCal.setTime(testContext.getStartDate());
        long start = startCal.getTimeInMillis();
        Calendar endCal = Calendar.getInstance();
        endCal.setTime(testContext.getEndDate());
        long end = endCal.getTimeInMillis();
        duration += end-start;

        for(int i = 0; i < methods.length; i++) {
            testNames.put(methods[i].getMethodName(), testName);
        }
    }

構成メソッドを除いて、呼び出されたメソッドのリストを使用できると思いましたが、マップは重複キーを受け入れません。

 for(IInvokedMethod invoked : invokedMethods){
      String invokedName = invoked.getTestMethod().getMethodName();
      if(!invokedName.contains("after")){
           if(!invokedName.contains("before")){
           testNames.put(invoked.getTestMethod().getMethodName(), testName);
           }
      }
 }

テスト ケースの結果の代わりに、すべての実行を一覧表示できる別の主キーを使用する方法はありますか?

4

2 に答える 2