我正在尝试从测试用例套件运行中生成 TestNG 报告,如果第一次或第二次运行失败,此测试用例最多可以运行 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);
}
}
}
有什么方法可以使用另一个主键来让我列出每次运行而不是测试用例结果?