テスト ケース スイートの実行から 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);
}
}
}
テスト ケースの結果の代わりに、すべての実行を一覧表示できる別の主キーを使用する方法はありますか?