ATU Reports抛出NullPointerException

时间:2016-08-04 12:25:02

标签: selenium-webdriver report testng

我正在尝试将ATU Reports用于我的项目。该套件约有25种@Test方法。执行完成后,获得空指针异常。

  

线程“main”中的异常java.lang.IllegalStateException:   java.lang.NullPointe rException           atu.testng.reports.listeners.ATUReportsListener.onFinish(Unknown Sour)   CE)           在org.testng.SuiteRunner.invokeListeners(SuiteRunner.java:204)           在org.testng.SuiteRunner.run(SuiteRunner.java:264)           在org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)           在org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)           at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)           在org.testng.TestNG.runSuitesLocally(TestNG.java:1140)           在org.testng.TestNG.run(TestNG.java:1048)           在org.testng.TestNG.privateMain(TestNG.java:1355)           at org.testng.TestNG.main(TestNG.java:1324)引起:java.lang.NullPointerException           在atu.testng.reports.writers.CurrentRunPageWriter.getTestCaseHTMLPath(U   知名来源)           在atu.testng.reports.writers.CurrentRunPageWriter.writeFailedData(Unkno)   wn来源)           atu.testng.reports.writers.CurrentRunPageWriter.content(Unknown Sourc)   E)           在atu.testng.reports.listeners.ATUReportsListener.generateCurrentRunPag   e(未知来源)           ......还有10个

另一个观察结果是,当@Test方法大约为5时,ATU报告是成功生成的。可能是特定的@Test方法导致了这个NullPointerException吗?

testng.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test name="Test">
  <groups>
  <run>
  <include name="A1" />
  <include name="A2" />
  <include name="B1" />
  </run>
    </groups>
    <classes>
    <class name="com.test.testcases.Class1"/>
      <class name="com.test.testcases.Class2"/>
      <class name="com.test.testcases.Class3"/>
    </classes>
  </test> <!-- Test -->
  <listeners>
  <listener class-name="atu.testng.reports.listeners.ATUReportsListener"></listener>
  <listener class-name="atu.testng.reports.listeners.ConfigurationListener"></listener>
  <listener class-name="atu.testng.reports.listeners.MethodListener"></listener>
  </listeners>
</suite> <!-- Suite -->

2 个答案:

答案 0 :(得分:0)

此代码中的某些内容为空(从ATU 5.1.1反编译):

public void onFinish(ISuite paramISuite)
  {
    try
    {
      this.iSuite = paramISuite;
      String str1 = SettingsFile.get("passedList") + this.passedTests.size() + ';';
      String str2 = SettingsFile.get("failedList") + this.failedTests.size() + ';';
      String str3 = SettingsFile.get("skippedList") + this.skippedTests.size() + ';';
      SettingsFile.set("passedList", str1);
      SettingsFile.set("failedList", str2);
      SettingsFile.set("skippedList", str3);
      HTMLDesignFilesJSWriter.lineChartJS(str1, str2, str3, this.runCount);
      HTMLDesignFilesJSWriter.barChartJS(str1, str2, str3, this.runCount);
      HTMLDesignFilesJSWriter.pieChartJS(this.passedTests.size(), this.failedTests.size(), this.skippedTests.size(), this.runCount);
      generateIndexPage();
      paramISuite.setAttribute("endExecution", Long.valueOf(System.currentTimeMillis()));
      long l = ((Long)paramISuite.getAttribute("startExecution")).longValue();
      generateConsolidatedPage();
      generateCurrentRunPage(l, System.currentTimeMillis());
      startReportingForPassed(this.passedTests);
      startReportingForFailed(this.failedTests);
      startReportingForSkipped(this.skippedTests);
      if (Directory.generateExcelReports) {
        ExcelReports.generateExcelReport(Directory.RUNDir + Directory.SEP + "(" + Directory.REPORTSDIRName + ") " + Directory.RUNName + this.runCount + ".xlsx", this.passedTests, this.failedTests, this.skippedTests);
      }
      if (Directory.generateConfigReports) {
        ConfigurationListener.startConfigurationMethodsReporting(this.runCount);
      }
      if (Directory.recordSuiteExecution) {
        try
        {
          this.recorder.stop();
        }
        catch (Throwable localThrowable) {}
      }
    }
    catch (Exception localException)
    {
      throw new IllegalStateException(localException);
    }
  }

我怀疑问题来自long l = ((Long)paramISuite.getAttribute("startExecution")).longValue();,因为TestNG与听众有一些问题。

您应该做的是在IDE中安装java反编译器(例如http://jd.benow.ca/)。然后,在调试模式下,您将能够找到问题的确切位置。

你也应该尝试最新的TestNG版本(6.9.12),它应该可以修复以前的监听器问题。

答案 1 :(得分:0)

手动调试并单独运行类时,我发现其中一个类抛出了一个nullpointer异常,因为传递的参数数量不匹配。