ATU 报告抛出 NullPointerException
ATU Reports throws NullPointerException
我正在尝试为我的项目使用 ATU 报告。该套件有大约 25 个 @Test 方法。执行完成后得到空指针异常
Exception in thread "main" java.lang.IllegalStateException:
java.lang.NullPointe rException
at atu.testng.reports.listeners.ATUReportsListener.onFinish(Unknown Sour
ce)
at org.testng.SuiteRunner.invokeListeners(SuiteRunner.java:204)
at org.testng.SuiteRunner.run(SuiteRunner.java:264)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.run(TestNG.java:1048)
at org.testng.TestNG.privateMain(TestNG.java:1355)
at org.testng.TestNG.main(TestNG.java:1324) Caused by: java.lang.NullPointerException
at atu.testng.reports.writers.CurrentRunPageWriter.getTestCaseHTMLPath(U
nknown Source)
at atu.testng.reports.writers.CurrentRunPageWriter.writeFailedData(Unkno
wn Source)
at atu.testng.reports.writers.CurrentRunPageWriter.content(Unknown Sourc
e)
at atu.testng.reports.listeners.ATUReportsListener.generateCurrentRunPag
e(Unknown Source)
... 10 more
另一个观察是,当@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 -->
此代码中有些内容为空(从 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),它应该可以解决以前的侦听器问题。
在手动调试 运行 class 时,我发现其中一个 class 抛出了空指针异常,因为传递的参数数量不匹配.
我正在尝试为我的项目使用 ATU 报告。该套件有大约 25 个 @Test 方法。执行完成后得到空指针异常
Exception in thread "main" java.lang.IllegalStateException: java.lang.NullPointe rException at atu.testng.reports.listeners.ATUReportsListener.onFinish(Unknown Sour ce) at org.testng.SuiteRunner.invokeListeners(SuiteRunner.java:204) at org.testng.SuiteRunner.run(SuiteRunner.java:264) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215) at org.testng.TestNG.runSuitesLocally(TestNG.java:1140) at org.testng.TestNG.run(TestNG.java:1048) at org.testng.TestNG.privateMain(TestNG.java:1355) at org.testng.TestNG.main(TestNG.java:1324) Caused by: java.lang.NullPointerException at atu.testng.reports.writers.CurrentRunPageWriter.getTestCaseHTMLPath(U nknown Source) at atu.testng.reports.writers.CurrentRunPageWriter.writeFailedData(Unkno wn Source) at atu.testng.reports.writers.CurrentRunPageWriter.content(Unknown Sourc e) at atu.testng.reports.listeners.ATUReportsListener.generateCurrentRunPag e(Unknown Source) ... 10 more
另一个观察是,当@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 -->
此代码中有些内容为空(从 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),它应该可以解决以前的侦听器问题。
在手动调试 运行 class 时,我发现其中一个 class 抛出了空指针异常,因为传递的参数数量不匹配.