我想在@AfterSuite部分中发送testNG(java + eclipse + testNG)生成的报告。 发送它不是问题,但关键是报告是在@AfterSuite部分之后生成的,所以,基本上,我发送前一个而不是最后一个! 关于如何解决它的任何想法?
答案 0 :(得分:2)
如您所见,@ AfterSuite在生成报告之前运行。
您是否考虑过实施TestNG IReporter listener?
public class MyReporter implements IReporter {
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> iSuites, String s) {
//Create your bespoke results
//Email results
}
}
显然,你可以看到一个缺陷,你必须从原始结果数据中生成自己的结果(如果你只想通过电子邮件发送数据子集,这可能是有利的。)
理想的解决方案是能够扩展默认报告生成器,但我不确定是否可以这样做。但是http://reportng.uncommons.org/提供了一个现有的监听器,它实际上提供了更好的报告输出。
如果你扩展这个类,并调用他们的代码,然后添加电子邮件生成器代码,它可能会工作
public class MyReporter extends HTMLReporter {
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> iSuites, String s) {
super.generateReport(xmlSuites, iSuites, s);
//Email results
}
}
您可以通过多种方式将监听器附加到测试套件,如TEstNG网站(http://testng.org/doc/documentation-main.html#listeners-testng-xml)所述
所有这些的替代方法是使用像Maven这样的构建工具来运行测试,然后有一个测试后事件来通过电子邮件发送结果。
答案 1 :(得分:0)
我从Krishnan复制了答案
它对我有用。
顺便说一下,在我的测试环境中,我需要扩展org.testng.reporters.EmailableReporter2而不是EmailableReporter以确保正确的计数。
请参阅以下内容供您参考:
Krishnan Mahadevan Krishnan Mahadevan于2012年7月31日上午8:58我猜您是指生成的TestNG &#34;可通过电子邮件发送-report.html&#34;你想要邮寄的。
根据这个假设,您应该如何做到这一点。
- 扩展org.testng.reporters.EmailableReporter
- 醇>
覆盖org.testng.reporters.EmailableReporter.generateReport(List, List,String)并让它做如下的事情:
@覆盖 public void generateReport(List xml,List suites,String outdir){ super.generateReport(xml,suites,outdir); SendFileEmail e = new SendFileEmail(); e.sendEmail(); }
现在将您的这个监听器添加到您的套件文件中 标签