ExtentReports:运行使用maven-assembly-plugin

时间:2018-11-01 13:30:33

标签: maven selenium extentreports selenium-extent-report

我正在尝试使用TestNG以编程方式执行我的测试用例。虚拟套件文件执行正常。但是,没有生成范围报告。

获取以下异常堆栈跟踪:

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)

现在,我将报告设置为在以下位置生成:

E:/selenium/reports/extent-reports/

我将我的屏幕快照通过字符串"./"保存在我的根文件夹中,该字符串基本上是将屏幕快照存储在E:中。

另一个观察结果:

  1. 我从命令行运行了mvn clean install -DskipTests=true

  2. 之后,我切换到目标文件夹并运行以下命令:java -jar jar-file-name.jar

  3. 似乎每个测试用例都因为抛出的IllegalStateException而失败。

  4. 但是屏幕快照已在target文件夹中捕获,从技术上讲,该文件夹应存储在root fodler中。

我试图更改报告和屏幕截图的位置。还让我分享一下我的ExtentReportService类的代码片段:

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

预先感谢您的努力。

1 个答案:

答案 0 :(得分:0)

此问题已由我遇到的另一个问题解决。

因此,我遇到的主要问题是加载extent-config.xml文件。因此,我更改了加载extent-config.xml文件的位置,如下所示:

File extentConfigFile = new File(classLoader.getResource("extent-config.xml").getFile());

File extentConfigFile = new File("./classes/extent-config.xml");

通过这种方式,测试用例将顺利执行。