问题
I am trying to execute my test cases programmatically using TestNG. The virtual suite file is executing fine. But, the Extent Report is not being generated.
Getting the following exception stacktrace:
java.lang.IllegalStateException: No reporters were started. Atleast 1 reporter must be started to create tests.
at com.aventstack.extentreports.Report.createTest(Report.java:69)
at com.aventstack.extentreports.ExtentReports.createTest(ExtentReports.java:241)
at com.aventstack.extentreports.ExtentReports.createTest(ExtentReports.java:254)
at com.automation.service.impl.ExtentReportService.setParentExtentTest(ExtentReportService.java:56)
at com.automation.service.impl.ExtentReportService.startTest(ExtentReportService.java:64)
at com.automation.tests.BaseTest.beforeMethod(BaseTest.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:455)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:520)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:716)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:988)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Right now, I have set my report to generate at the following location:
E:/selenium/reports/extent-reports/
And I am saving my screenshots in my root folder by the string: "./" which basically is storing the screenshots in E:.
Another observation:
I ran
mvn clean install -DskipTests=truefrom command line.After that I switched to the target folder and ran the following command:
java -jar jar-file-name.jarLooks like every test cases is failing because of the
IllegalStateExceptionit is throwing.But the screenshots were being captured in the
targetfolder, which technically should be stored in the root fodler.
I tried to change locations of the report and the screenshots. Also let me share the code snipped of my ExtentReportService class:
private static void initializeExtentReport(Configuration config) {
if (extent == null) {
extent = new ExtentReports();
htmlReporter = new ExtentHtmlReporter(getReportName(config));
ClassLoader classLoader = ExtentReportService.class.getClassLoader();
File extentConfigFile = new File(classLoader.getResource("extent-config.xml").getFile());
htmlReporter.loadXMLConfig(extentConfigFile);
extent.attachReporter(htmlReporter);
extent.setSystemInfo("Environment", config.getAutomationServer());
}
}
Thanks in advance for the efforts.
回答1:
This issue got fixed with the other issue I was having.
So, the main problem I was having was loading the extent-config.xml file. Thus, I changed the location for loading the extent-config.xml file as follows:
File extentConfigFile = new File(classLoader.getResource("extent-config.xml").getFile());
to
File extentConfigFile = new File("./classes/extent-config.xml");
In this manner, the test cases will execute smoothly.
来源:https://stackoverflow.com/questions/53102340/extentreports-htmlreporter-not-starting-when-running-an-executable-jar-file-cre