我最近将我的项目从JUnit5转换为TestNG,完全是为了得到体面的报告。
我添加了一个监听器,它在每次运行结束时生成报告:
@Override
public void onFinish(ITestContext context) {
System.out.println("FINISH. Sending email report.");
utils.EmailHandler.sendEmail("Finished test", context.toString());
}
我的问题是,通过电子邮件发送的报告不是来自当前运行,而是来自上一次运行。
然而,如果我使用Eclipse IDE在/test-output/custom-report.html中打开报告,它是正确的!
我如何确保发出的电子邮件是最新的?
当我将对sendEmail的调用移到监听器的GenerateReport方法的末尾时,它终于起作用了。这样可以消除所有混淆,并确保输出文件在试图发送出去之前是完整的。
除非,您以某种方式附加了旧版本;根据您的描述,我想说,最有可能的文件是在电子邮件发送后创建的(因此每次都是以前的版本)。但是,如果这个理论是正确的,那么它一定是第一次通过电子邮件发送了一个空文件:)做到了吗?
想法:在发送电子邮件的代码中插入几分钟的延迟。邮件一离开地面就去检查文件,我想它会是旧版本(因为它还没有被创建!)
您是否尝试过使用@aftertest
注释?不确定,但是onfinish(ITestContext context)
可能在@aftermethod
和aftertest
之间徘徊,导致电子邮件稍早离开;在完全附着之前!但是,我不确定为什么在每次测试之后而不是整个测试完成之后发送电子邮件[所以要使用onfinish(ISuite suite)
]。
@AfterTest
public void afterTest(ITestContext context) {
//improving answer after initial comments
if(bufferredWriter!=null){
bufferredWriter.close();
}
else{
System.out.println("FINISH. Sending email report.");
utils.EmailHandler.sendEmail("Finished test", context.toString());
}
}
不过,我强烈建议您看一下ExtentReports。绝对比TestNG附带的内置报告更好!
我正试图在testng报告中附加屏幕打印。这在index.html报表中工作得很好,但在emailable报表中,它只是html标记,当我检查它作为html escaps记录的html文件时,对此有任何帮助
我使用下面的代码片段通过邮件发送testng的emailable-report.html。 公共类SampleSendMail{
请让我知道通过邮件自动发送TestNG可电子邮件报告而不添加外部jar的最佳方式。
我有一个场景,我需要从不同的TestNG-Emailable-HTML报告中收集数据,并使其与testng-emailable报告一样。 我对此没有任何想法,比如我如何实现它。我只想创建一个分离的java项目,它将读取不同的html报告,并将使其最终合并报告看起来像testng-emailable报告。 我看起来没有工作代码。只是寻找一些输入来启动这个需求。
TestNG生成一个可通过电子邮件发送的报告。我已经看到可以通过使用监听器自定义这个报告。却得不到我想要的。我的要求是在本报告的摘要部分包括额外的细节。我希望能够添加一个新的表或额外的列来显示测试执行的环境细节。 试图附上一个截图,但显然遗漏了一些东西,它没有出现。