我想在@AfterSuite 部分发送由 testNG ( java+eclipse+testNG) 生成的报告。发送它不是问题,但重点是报告是在@AfterSuite 部分之后生成的,所以,基本上,我发送的是前一个而不是最后一个!关于如何解决它的任何想法?
2 回答
如您所见,@AfterSuite 在生成报告之前运行。
您是否考虑过实现TestNG IReporter 侦听器?
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 这样的构建工具来运行你的测试,然后有一个测试后事件来通过电子邮件发送结果。
我从Krishnan那里复制了答案。
这个对我有用。
顺便说一句,在我的测试环境中,我需要扩展 org.testng.reporters.EmailableReporter2 而不是 EmailableReporter 以确保正确计数。
请参阅以下内容供您参考:
Krishnan Mahadevan Krishnan Mahadevan 于 2012 年 7 月 31 日上午 8 点 58 分我猜您指的是 TestNG 生成的“emailable-report.html”,您希望将其邮寄。
有了这个假设,这就是你应该如何做到的。
- 扩展 org.testng.reporters.EmailableReporter
覆盖 org.testng.reporters.EmailableReporter.generateReport(List, List, String) 并让它执行如下操作:
@Override public void generateReport(List xml, List suites, String outdir) { super.generateReport(xml, suites, outdir); SendFileEmail e= new SendFileEmail(); e.sendEmail(); }
现在使用标签将你的这个监听器添加到你的套件文件中。