2016-11-26 1 views
0

Ich habe Probleme, meine vollständigen Testergebnisse in Extent-Berichte zu pushen - mit Version 2.4. Grundsätzlich habe ich 2 Tests 1 Test in jeder Klassendatei und habe eine "SimpleReportFactory" als Basisreporter.Extent Reports - Alle Ergebnisse werden nicht erfasst, wenn ich 2 oder mehr Klassendateien habe

Wenn ich die Tests über testng.xml nur der letzte Test wird erfasst, bitte helfen bei der Lösung dieses Problems, habe ich andere Beiträge überprüft, finde ich einige Antworten, aber versäumt, es anzuwenden. Ich brauche ein Arbeitsbeispiel, in dem ich eine Extent-Report-Instanz verwenden und sie testübergreifend verwenden und für alle Tests einen Bericht erstellen kann.

Ich bekomme Null-Zeiger-Ausnahme auf meiner 2. Test-Klasse, wenn ich die unten genannten Tests über Testng Xml, ist es ein Framework-basierte Tests! Hier ist einer der Posts, die ich gefunden habe (could not add the result of two class in the ExtentReport) wo ich versucht habe, den gegebenen Vorschlag umzusetzen, aber es gibt mir NPE! Nicht sicher, wie eine Instanz implementiert und global verwendet wird.

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(); 
} 
+0

Bitte versuchen Sie es (null == Reporter) anstelle von (Reporter == null) –

Antwort

0

Sie initialisieren Ihren Reporter als Ãœberprüfungsmodus, der nicht angehängt wird. Ändern Sie die Initialisierung wie folgt:

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

Dadurch werden Ihre zuvor geschriebenen Daten und neue Tests an den vorhandenen Bericht angehängt.

Edited Antwort für editierte Frage

Sie sind nicht Ihre ExtentReports Initialisierung erklärt es einfach in die neue Klasse. Initialisieren Sie es wie in der Klasse Registrierung.

Verwenden

public ExtentReports reporter = SimpleReportFactory.getReporter(); 

in Ihrem SignIn cla statt

ExtentReports reporter; 

nur.

+0

Hallo optimist_creeper, Sorry, meine Frage war nicht perfekt, habe ich mit einem anderen Projekt verwirrt, dass es in meiner IDE war, habe ich geändert meine Frage oben, bitte werfen Sie einen Blick und lassen Sie es mich wissen, wenn Sie ein Feedback haben! Vielen Dank! – sammy90

+0

Sie haben einen einfachen Fehler gemacht. Siehe die aktualisierte Antwort. –

+0

Danke! Aber das beantwortet immer noch nicht meine Frage, bitte überprüfe die ähnliche Frage, die in einem anderen Thread gestellt wurde, den ich oben verlinkt habe, bitte sieh den Vorschlag von noor, ich habe Probleme bei der Implementierung. Ich weiß nicht, wie Sie den Extentbericht einmal initialisieren und dieses initialisierte Extentreportobjekt oder diese initialisierte Methode für alle anderen Klassen verwenden. – sammy90

Verwandte Themen