[英]TestNG where can I run code after Reporter? Want to send test-output/emailable-report.html
我想运行代码以使用emailable-report.html文件发送电子邮件。 理想情况下,当我从IDE或Maven运行TestNG套件时,这将起作用。 我认为在这里提出了同样的问题: https : //groups.google.com/forum/?fromgroups=#!topic/webdriver/fvJ-edHPJ3g
从评论中,我试图理解一种建议的最小方法,使用添加的代码覆盖现有EmailableReporter中的方法来发送电子邮件。 我试图避免完全实现自己的IReporter侦听器,尽管主要是因为我在遵循有关此操作的说明时遇到了困难(稍微超出我的java-foo的范围,它会欢迎一个完整的示例)。
我的课看起来像:
public class TestMailSender extends EmailableReporter{
TestMailer testMailer = new TestMailer();
Message resultEmail;
@Override
public void generateReport(List<XmlSuite> arg0, List<ISuite> arg1, String arg2) {
/* Use the parent class to do the work */
super.generateReport(arg0, arg1, arg2);
/* create email from utility class with address, subject line, message content */
resultEmail = testMailer.makeEmail("someone@somewhere.com", "Build: " + "test"
+ "suite results", "results attached");
/* fetch the hopefully completed default report */
/* TODO: get report to common path for both IDE and Maven runs */
File resultsFile = new File("./test-output/emailable-report.html");
/* add file to the email with build referencing name, then send the email */
resultEmail = testMailer.attachFile(resultEmail, resultsFile.getAbsoluteFile(),
"build_" + "test" + "_emailable-report.html");
testMailer.sendEmail(resultEmail);
}
}
当我将上述类作为侦听器添加到TestNG套件中时,得到的结果为空。 我正在尝试按以下说明在testNG.xml套件中执行此操作: http ://testng.org/doc/documentation-main.html#listeners-testng-xml
我认为空结果可能是进度,因为它没有像我将代码放入@AfterSuite时那样发送先前的运行结果文件。 在emailable-report.html文件完成之后,我一定不能像尝试那样运行代码,因为通过电子邮件发送的文件为空。 我得到的的东西,如果我更改resultsFile我得到一个FileNotFoundException异常的路径,但我想该文件还没有刷新,并在这里我想给它发送点关闭。
我可以将代码放在哪里,以便它可以为当前运行查找并发送完整的emailable-report.html文件? 我必须实现自己的IReporter侦听器,还是有一些简单的方法可以获取生成emailable-report.html文件的默认侦听器的( 完成 )输出?
我最终编辑了上面的代码示例,以覆盖generateReport而不是endHtml,但是想法大致相同。 我认为让我感到困惑的是,我尝试使用的路径不正确,一旦我切换到arg2而不是错误的硬编码字符串,事情就开始起作用。 下面的代码块,以及在我的testNG.xml和Bob的叔叔中,作为侦听器的扩展类的定义。
public class TestMailSender extends EmailableReporter{
TestMailer testMailer = new TestMailer();
Message resultEmail;
@Override
public void generateReport(List<XmlSuite> arg0, List<ISuite> arg1, String arg2) {
super.generateReport(arg0, arg1, arg2);
String someBuildIdAsParameter = arg1.get(0).getParameter("build");
String someEmailAsParameter = arg1.get(0).getParameter("notifyEmail");
/* create email from utility class with address, subject line, message content */
resultEmail = testMailer.makeEmail(someEmailAsParameter, "Build: " + someBuildIdAsParameter
+ " suite results", "results attached");
/* fetch the hopefully completed default report */
File resultsFile = new File(arg2 + "\\emailable-report.html");
/* add file to the email with build referencing name, then send the email */
resultEmail = testMailer.attachFile(resultEmail, resultsFile.getAbsoluteFile(),
"build_" + someBuildIdAsParameter + "_emailable-report.html");
testMailer.sendEmail(resultEmail);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.