2017-06-08 4 views
0

Wenn Klassen parallel mit TestNG ausgeführt werden, erhalten wir keinen Extent-Bericht, aber der TestNG-Bericht wird aktualisiert. Bitte finden Sie den folgenden Beispielcode und Versionen, die ich verwende. Wenn nur eine Klasse (TestClass1.java) ausgeführt wird, wird der Extent Report generiert.Extent-Berichte können nicht erstellt werden, wenn Klassen parallel zu TestNG ausgeführt werden

Selen Version 3.4.0

Umfang Bericht Version: 3.0.6

ExtentReportBase.java

ExtentHtmlReporter htmlReporter; 
ExtentReports extent; 
ExtentTest test; 


@BeforeTest 
public void setUp() 
{ 
    //where we need to generate the report 
    htmlReporter = new ExtentHtmlReporter(System.getProperty("user.dir")+"/test-output/MyReport.html"); 
    extent = new ExtentReports(); 
    extent.attachReporter(htmlReporter); 

    // Set our document title, theme etc.. 
    htmlReporter.config().setDocumentTitle("My Test Report"); 
    htmlReporter.config().setReportName("Test Report"); 
    htmlReporter.config().setTestViewChartLocation(ChartLocation.TOP); 
    htmlReporter.config().setTheme(Theme.DARK); 

} 

@AfterMethod 
public void getResult(ITestResult result) 
{ 
    if(result.getStatus()==ITestResult.FAILURE) 
    { 
     test.log(Status.FAIL, MarkupHelper.createLabel(result.getName() + "Test Case failed due to below issues", ExtentColor.RED)); 
     test.fail(result.getThrowable()); 
    } 

    else if(result.getStatus()==ITestResult.SUCCESS) 
    { 
     test.log(Status.PASS, MarkupHelper.createLabel(result.getName() + "Test Case Passed", ExtentColor.GREEN)); 
    } 

    else 
    { 
     test.log(Status.SKIP, MarkupHelper.createLabel(result.getName() + "Test Case skipped", ExtentColor.YELLOW)); 
    } 

} 

@AfterSuite 
public void tearDown() 
{ 
    extent.flush(); 
} 

TestClass1.java

@Test 
public void functionality1Test1() 
{ 
    test = extent.createTest("functionality1Test1"); 
    Assert.assertTrue(1 > 0); 
} 

@Test 
public void functionality1Test2() 
{ 
    test = extent.createTest("functionality1Test2"); 
    Assert.assertEquals("Google", "goo"); 
} 

@Test 
public void functionality1Test3() 
{ 
    test = extent.createTest("functionality1Test3"); 
    Assert.assertNotEquals("Google", "Google"); 
}  

TestClass2.java

@Test 
public void functionality2Test1() 
{ 
    test = extent.createTest("functionality2Test1"); 
    Assert.assertTrue(1 > 0); 
} 

@Test 
public void functionality2Test2() 
{ 
    test = extent.createTest("functionality2Test2"); 
    Assert.assertEquals("Google", "goo"); 
} 

@Test 
public void functionality2Test3() 
{ 
    test = extent.createTest("functionality2Test3"); 
    Assert.assertNotEquals("Google", "Google"); 
} 

testng.xml

`<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite" parallel="classes"> 
    <test name="Test"> 
    <classes> 
     <class name="TestExtentReport.TestClass1"/> 
     <class name="TestExtentReport.TestClass2"/> 
    </classes> 
    </test> <!-- Test --> 
</suite> <!-- Suite -->` 
+0

Können Sie Ihre testng.xml-Datei veröffentlichen, von der Sie Ihren Test ausführen. – Ankur

+0

Jetzt habe ich die Datei testng.xml hinzugefügt – Suraj

Antwort

0

Diese 3 sind Instanzvariable für jede Klasse Aufruf sie brauchen, um sie so erklären initialisiert werden statische Ihr Problem lösen.

ExtentHtmlReporter htmlReporter; 
ExtentReports extent; 
ExtentTest test; 

erklären sie als -

static ExtentHtmlReporter htmlReporter; 
static ExtentReports extent; 
static ExtentTest test; 

ich mit dem gleichen Code versucht. Es funktioniert gut für mich.

Bitte beachten Sie den beigefügten Screenshot. ExtentReportResultBaseClass

Lassen Sie mich wissen, ob das funktioniert.

+0

Danke Ankur ... Es ist meine schlechte ich habe es verpasst zu bemerken ... – Suraj

+0

Wenn es Ihr Problem gelöst hat, dann akzeptieren Sie bitte die Antwort. – Ankur

Verwandte Themen