繁体   English   中英

TestNG在Reporter之后我可以在哪里运行代码? 想要发送test-output / emailable-report.html

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM