0

我无法将完整的测试结果推送到范围报告中 - 使用 2.4 发行版。基本上我在每个类文件中有 2 个测试 1 个测试,并且有一个“SimpleReportFactory”作为我的基础报告器。

当我通过 testng.xml 运行测试时,只有最后一个测试被捕获,请帮助解决这个问题,我检查了其他帖子,我找到的答案很少,但未能应用它。我需要一个工作示例,我可以在其中使用范围报告实例并在测试中使用它并为所有测试生成 1 个报告。

我的第二个测试类出现空指针异常,当我通过 testng xml 运行以下测试时,它是一个基于框架的测试!这是我发现的帖子之一(无法在 ExtentReport 中添加两个类的结果),我试图实施给出的建议,但它给了我 NPE!不确定如何实现实例并在全局范围内使用它。

    public class SimpleReportFactory {

    public static ExtentReports reporter;

    public static synchronized ExtentReports getReporter () {
        if (reporter == null) {
            reporter = new ExtentReports("SimpleReport.html", true, DisplayOrder.NEWEST_FIRST);
        }
        return reporter;
    }

    public static synchronized void closeReporter() {
        reporter.flush();
        reporter.close();
    }

}

    public class Registration extends BaseClass {


    public ExtentReports reporter = SimpleReportFactory.getReporter();


    @BeforeMethod
    public void setUp() throws IOException {
        intialize();


    }


    @Test
    public void TestUserRegistration() throws Exception {

        ExtentTest testreporter = reporter.startTest("TestUserRegistration");


        WebElement ProfileLink = getWebElement("profilepage.createaccount.profilelink");
        ProfileLink.click();
        testreporter.log(LogStatus.INFO, " Click on the Profile Link from HomePage");


        RandomEmail();
        driverwait(1);
        WebElement Password = getWebElement("profilepage.createaccount.password");
        Password.sendKeys(Repository.getProperty("password"));
        driverwait(1);
        WebElement SubmitButton = getWebElement("profilepage.createaccount.submitbutton");
        SubmitButton.click();
        reporter.endTest(testreporter);


    }

    @AfterMethod
    public void testDown() {
        CloseBrowser();
        reporter.close();


   }

}

    public class SignIn extends BaseClass {

    ExtentReports reporter;

    @BeforeMethod
    public void setUp() throws IOException {
        intialize();

    }

    @Test
    public void LoginToTheApplication() throws Exception {

        ExtentTest testreporter = reporter.startTest("LoginToTheApplication");

        WebElement profilelink = getWebElement("profilepage.signin.profilelink");
        profilelink.click();
        testreporter.log(LogStatus.INFO, "Hey");

        WebElement signinemail = getWebElement("profilepage.signin.emailaddress");
        signinemail.sendKeys(Repository.getProperty("signinemailaddress"));

        driverwait(1);

        WebElement signinpassword = getWebElement("profilepage.signin.password");
        signinpassword.sendKeys(Repository.getProperty("signinpassword"));

        driverwait(1);

        WebElement clicksubmit = getWebElement("profilepage.signin.submitbutton");
        clicksubmit.click();
        reporter.endTest(testreporter);

    }

    @AfterMethod
    public void testDown() {

    CloseBrowser();
    reporter.close();
}
4

1 回答 1

0

您正在将您的记者初始化为覆盖模式而不是附加模式。像这样更改初始化

reporter = new ExtentReports("SimpleReport.html", false, DisplayOrder.NEWEST_FIRST);

这将保留您以前编写的数据,并且新的测试将附加到现有报告中。

已编辑问题的已编辑答案

您没有初始化您的 ExtentReports,只是在您的新类中声明了它。像在类Registration中那样初始化它。

利用

public ExtentReports reporter = SimpleReportFactory.getReporter();

在您的SignIn类中,而不是

ExtentReports reporter;

只要。

于 2016-11-26T08:04:28.570 回答