下面列出了怎么用org.testng.ISuite的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
ExtentService.getInstance().setReportUsesManualConfiguration(true);
ExtentService.getInstance().setAnalysisStrategy(AnalysisStrategy.SUITE);
for (ISuite suite : suites) {
Map<String, ISuiteResult> result = suite.getResults();
for (ISuiteResult r : result.values()) {
ITestContext context = r.getTestContext();
ExtentTest suiteTest = ExtentService.getInstance().createTest(r.getTestContext().getSuite().getName());
buildTestNodes(suiteTest, context.getFailedTests(), Status.FAIL);
buildTestNodes(suiteTest, context.getSkippedTests(), Status.SKIP);
buildTestNodes(suiteTest, context.getPassedTests(), Status.PASS);
}
}
for (String s : Reporter.getOutput()) {
ExtentService.getInstance().setTestRunnerOutput(s);
}
ExtentService.getInstance().flush();
}
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
ExtentService.getInstance().setReportUsesManualConfiguration(true);
ExtentService.getInstance().setAnalysisStrategy(AnalysisStrategy.SUITE);
for (ISuite suite : suites) {
Map<String, ISuiteResult> result = suite.getResults();
for (ISuiteResult r : result.values()) {
ITestContext context = r.getTestContext();
ExtentTest suiteTest = ExtentService.getInstance().createTest(r.getTestContext().getSuite().getName());
buildTestNodes(suiteTest, context.getFailedTests(), Status.FAIL);
buildTestNodes(suiteTest, context.getSkippedTests(), Status.SKIP);
buildTestNodes(suiteTest, context.getPassedTests(), Status.PASS);
}
}
for (String s : Reporter.getOutput()) {
ExtentService.getInstance().setTestRunnerOutput(s);
}
ExtentService.getInstance().flush();
}
/** Creates a section showing known results for each method */
protected void generateMethodDetailReport(List<ISuite> suites) {
for (ISuite suite : suites) {
Map<String, ISuiteResult> r = suite.getResults();
for (ISuiteResult r2 : r.values()) {
ITestContext testContext = r2.getTestContext();
if (r.values().size() > 0) {
m_out.println("<h1>" + testContext.getName() + "</h1>");
}
resultDetail(testContext.getFailedConfigurations());
resultDetail(testContext.getFailedTests());
resultDetail(testContext.getSkippedConfigurations());
resultDetail(testContext.getSkippedTests());
resultDetail(testContext.getPassedTests());
}
}
}
@Override
public void onFinish( ISuite suite ) {
if (IS_TRACE_ENABLED) {
ATS_LOGGER.log(this.hashCode() + ": End run event received", new Exception("Debugging trace"));
}
if (!ActiveDbAppender.isAttached) {
return;
}
if (currentSuiteName != null) {
endSuite();
}
// end the run
logger.endRun();
}
@Override
public void generateReport(
List<XmlSuite> arg0,
List<ISuite> arg1,
String arg2 ) {
//we just need the report format, that why we set other fields null
ReportFormatter reportFormatter = new ReportFormatter(ReportAppender.getRuns(),
mailSubjectFormat,
null,
null,
0,
null);
// send report by mail
MailReportSender mailReportSender = new MailReportSender(reportFormatter.getDescription(),
reportFormatter.toHtml());
mailReportSender.send();
}
/**
* Event for end of suite
*
* @param suite
*/
@Override
public void onFinish(ISuite suite) {
// TODO: Find a place to call it.
// We are not using shared execution, that means that we are the only
// one that are using it and we just ended with it, so let's set it to
// not active
if (executionId > 0 && !difidoConfig.getPropertyAsBoolean(RemoteDifidoOptions.USE_SHARED_EXECUTION)) {
try {
client.endExecution(executionId);
} catch (Exception e) {
System.out.println("Failed to close execution with id " + executionId);
}
executionId = -1;
}
}
public void onStart(ISuite suite) {
super.onStart(suite);
difidoConfig = new RemoteDifidoConfig();
String host = null;
int port = 0;
try {
enabled = Boolean.parseBoolean(difidoConfig.getPropertyAsString(RemoteDifidoOptions.ENABLED));
if (!enabled) {
return;
}
host = difidoConfig.getPropertyAsString(RemoteDifidoOptions.HOST);
port = Integer.parseInt(difidoConfig.getPropertyAsString(RemoteDifidoOptions.PORT));
client = new DifidoClient(host, port);
executionId = prepareExecution();
machineId = client.addMachine(executionId, getExecution().getLastMachine());
enabled = true;
log.fine(RemoteDifidoReporter.class.getName() + " was initialized successfully");
} catch (Throwable t) {
enabled = false;
log.warning("Failed to init " + RemoteDifidoReporter.class.getName() + "connection with host '" + host + ":"
+ port + "' due to " + t.getMessage());
}
}
protected void onHealthCheck(ISuite suite) {
String healthCheckClass = Configuration.get(Parameter.HEALTH_CHECK_CLASS);
if (suite.getParameter(Parameter.HEALTH_CHECK_CLASS.getKey()) != null) {
// redefine by suite arguments as they have higher priority
healthCheckClass = suite.getParameter(Parameter.HEALTH_CHECK_CLASS.getKey());
}
String healthCheckMethods = Configuration.get(Parameter.HEALTH_CHECK_METHODS);
if (suite.getParameter(Parameter.HEALTH_CHECK_METHODS.getKey()) != null) {
// redefine by suite arguments as they have higher priority
healthCheckMethods = suite.getParameter(Parameter.HEALTH_CHECK_METHODS.getKey());
}
String[] healthCheckMethodsArray = null;
if (!healthCheckMethods.isEmpty()) {
healthCheckMethodsArray = healthCheckMethods.split(",");
}
checkHealth(suite, healthCheckClass, healthCheckMethodsArray);
}
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
StringBuilder sBuilder = new StringBuilder();
// Iterating over each suite
for (ISuite suite : suites) {
// Getting the results for the each suite
Map<String, ISuiteResult> suiteResults = suite.getResults();
for (ISuiteResult sr : suiteResults.values()) {
// get context for result
ITestContext tc = sr.getTestContext();
// go over all cases
for (ITestNGMethod method : tc.getAllTestMethods()) {
// if a case has "ExpectedFaiGPDBWritable.javalure" annotation, insert to sBuilder
if (method.getConstructorOrMethod().getMethod().getAnnotation(ExpectedFailure.class) != null) {
sBuilder.append(method.getInstance().getClass().getName() + "/" + method.getMethodName()).append(System.lineSeparator());
}
}
}
}
// write results to file
try {
FileUtils.writeStringToFile(new File(outputDirectory + "/automation_expected_failures.txt"), sBuilder.toString(), false);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onStart(final ISuite suite) {
final TestResultContainer result = new TestResultContainer()
.setUuid(getUniqueUuid(suite))
.setName(suite.getName())
.setStart(System.currentTimeMillis());
getLifecycle().startTestContainer(result);
}
@Override
public void onFinish(final ISuite suite) {
final String uuid = getUniqueUuid(suite);
getLifecycle().stopTestContainer(uuid);
getLifecycle().writeTestContainer(uuid);
}
private void ifSuiteFixtureStarted(final ISuite suite, final ITestNGMethod testMethod) {
if (testMethod.isBeforeSuiteConfiguration()) {
startBefore(getUniqueUuid(suite), testMethod);
}
if (testMethod.isAfterSuiteConfiguration()) {
startAfter(getUniqueUuid(suite), testMethod);
}
}
/** Creates summary of the run */
@Override
public void generateReport(List<XmlSuite> xml, List<ISuite> suites, String outdir) {
try {
m_out = createWriter(outdir);
} catch (IOException e) {
L.error("output file", e);
return;
}
ConfigUtil cr = ConfigUtil.getInstance();
if (cr.getSrouceCodeEncoding() != null) {
builder.setEncoding(cr.getSrouceCodeEncoding());
} else {
builder.setEncoding("UTF-8");
}
builder.addSourceTree(new File(cr.getSourceCodeDir()));
startHtml(m_out);
generateSuiteSummaryReport(suites);
testIds.clear();
generateMethodSummaryReport(suites);
testIds.clear();
generateMethodDetailReport(suites);
testIds.clear();
endHtml(m_out);
m_out.flush();
m_out.close();
}
/**
* Creates a table showing the highlights of each test method with links to
* the method details
*/
protected void generateMethodSummaryReport(List<ISuite> suites) {
startResultSummaryTable("methodOverview");
int testIndex = 1;
for (ISuite suite : suites) {
if (suites.size() > 1) {
titleRow(suite.getName(), 5);
}
Map<String, ISuiteResult> r = suite.getResults();
for (ISuiteResult r2 : r.values()) {
ITestContext testContext = r2.getTestContext();
String testName = testContext.getName();
m_testIndex = testIndex;
// resultSummary(suite, testContext.getSkippedConfigurations(),
// testName, "skipped",
// " (configuration methods)");
resultSummary(suite, testContext.getSkippedTests(), testName, "skipped", "");
// resultSummary(suite, testContext.getFailedConfigurations(),
// testName, "failed",
// " (configuration methods)");
resultSummary(suite, testContext.getFailedTests(), testName, "failed", "");
resultSummary(suite, testContext.getPassedTests(), testName, "passed", "");
testIndex++;
}
}
m_out.println("</table>");
}
/**
* Get All tests id by class + method + parameters hash code.
*
* @param context
* @param suite
*/
private void getAllTestIds(ITestContext context, ISuite suite) {
IResultMap passTests = context.getPassedTests();
IResultMap failTests = context.getFailedTests();
List<IInvokedMethod> invokedMethods = suite.getAllInvokedMethods();
for (IInvokedMethod im : invokedMethods) {
if (passTests.getAllMethods().contains(im.getTestMethod())
|| failTests.getAllMethods().contains(im.getTestMethod())) {
int testId = getId(im.getTestResult());
// m_out.println("ALLtestid=" + testId);
allRunTestIds.add(testId);
}
}
}
@Override
public void onStart(ISuite iSuite) {
String logLevel = iSuite.getParameter(LOG_LEVEL_PARAM_NAME);
if (StringUtils.isNotEmpty(logLevel)) {
LogUtil.configureLogLevel(logLevel);
}
}
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory)
{
List<ITestResult> list = new ArrayList<ITestResult>();
for (ISuite suite : suites) {
Map<String, ISuiteResult> suiteResults = suite.getResults();
for (ISuiteResult suiteResult : suiteResults.values()) {
ITestContext testContext = suiteResult.getTestContext();
IResultMap passedTests = testContext.getPassedTests();
IResultMap failedTests = testContext.getFailedTests();
IResultMap skippedTests = testContext.getSkippedTests();
IResultMap failedConfig = testContext.getFailedConfigurations();
list.addAll(this.listTestResult(passedTests));
list.addAll(this.listTestResult(failedTests));
list.addAll(this.listTestResult(skippedTests));
//list.addAll(this.listTestResult(failedConfig));
}
}
CopyReportResources reportReource=new CopyReportResources();
try {
reportReource.copyResources();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
this.sort(list);
this.outputResult(list, outputDirectory+"/report.html");
}
@Override
public void onFinish(ISuite suite) {
try {
File jsonfile = new File("target/");
File reportOutputDirectory = new File("target/test-classes/reports/cucumberreports/");
String[] fileNames = jsonfile.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".json"))
return true;
return false;
}
});
for (int i = 0; i < fileNames.length; i++) {
fileNames[i] = jsonfile.getAbsolutePath() + "/" + fileNames[i];
}
List<String> jsonFiles = Arrays.asList(fileNames);
Configuration configuration = new Configuration(reportOutputDirectory, suite.getName());
configuration.setStatusFlags(true, true, true);
ReportBuilder reportBuilder = new ReportBuilder(jsonFiles, configuration);
reportBuilder.generateReports();
oLog.info("Report Generated : " + configuration.getReportDirectory());
} catch (Exception e) {
oLog.equals(e);
}
}
@Override
public TestRunner newTestRunner(ISuite suite, XmlTest test, Collection<IInvokedMethodListener> listeners,
List<IClassListener> classListeners) {
TestRunner runner = null!=testRunnerFactory?testRunnerFactory.newTestRunner(suite, test, listeners, classListeners):
new TestRunner(configuration, suite, test,
false /*skipFailedInvocationCounts */,
listeners,classListeners);;
init(runner);
return runner;
}
public void onFinish(ISuite suite) {
try {
generateTestFailedXML(suite);
} catch (Exception e) {
logger.debug(e.getStackTrace());
logger.info("Unable to create testng-failed-qas.xml");
}
}
@Override
public void onStart(final ISuite suite) {
if (skipReporting())
return;
super.onStart(suite);
ReporterUtil.createMetaInfo(suite);
}
@Override
public void onFinish(ISuite suite) {
if (skipReporting())
return;
super.onFinish(suite);
logger.debug("onFinish: start");
ReporterUtil.createMetaInfo(suite);
logger.debug("onFinish: done");
}
@Override
public void onStart(ISuite suite) {
suite.setParentInjector(injector);
long numberOfEnabledTests =
suite.getAllMethods().parallelStream().filter(ITestNGMethod::getEnabled).count();
LOG.info("Starting suite '{}' with {} test methods.", suite.getName(), numberOfEnabledTests);
}
@Override
public void onStart(ISuite iSuite) {
try {
appiumServerManager.startAppiumServer();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFinish(ISuite iSuite) {
try {
appiumServerManager.stopAppiumServer();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onStart(ISuite iSuite) {
try {
appiumServerManager.startAppiumServer();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFinish(ISuite iSuite) {
try {
appiumServerManager.stopAppiumServer();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onStart(ISuite iSuite) {
try {
appiumServerManager.startAppiumServer();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Event for start of suite
*
* @param suite
*/
@Override
public void onStart(ISuite suite) {
execution = null;
totalPlannedTests = getAllPlannedTestsCount(suite);
updateIndex();
generateUid();
addMachineToExecution(suite.getHost());
}
private int getAllPlannedTestsCount(ISuite suite) {
int totalPlanned = 0;
for (ITestNGMethod method : suite.getAllMethods()) {
totalPlanned += getDataProviderCases(method);
}
return totalPlanned;
}