java - 尝试在 TestNG 中使用 ExtentReports 生成测试报告时获取 NullPointerException

标签 java selenium reporting-services selenium-webdriver testng

我正在尝试使用 TestNG 中的 ExtentReports 准备测试执行报告。下面是我的代码-

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.LogStatus;

public class TestNGExample {

WebDriver driver;
WebElement wb;
ExtentReports report = ExtentReports.get(TestNGExample.class);


@BeforeTest
public void open(){
    driver = new FirefoxDriver();
    driver.get("https://www.google.co.in/?gws_rd=ssl");
    driver.manage().window().maximize();
    report.init("E:\\Report\\report.html", true);
    report.log(LogStatus.INFO, "Browser is up and running");
}//open

@AfterClass
public void tearDown(){
    report.log(LogStatus.INFO, "Test Completed");
    driver.close();
    driver.quit();
}//tearDown


@Test
public void First(){
report.log(LogStatus.INFO, "Starting the test process");
String s =  driver.findElement(By.xpath(".//*[@id='hplogo']")).getAttribute("Title");
Assert.assertEquals("Google", s);
report.log(LogStatus.PASS, "Checking for the result");
report.attachScreenshot("E:\\Report.png");
report.endTest();
}//first

}//TestNGExample 

运行此代码后,我收到从 ExtentReports 生成的 NullPointerException。 下面我把我得到的完整异常(exception) -

[TestNG] Running:
 C:\Users\Shantanu_Nandan\AppData\Local\Temp\testng-eclipse-1317498292\testng-customsuite.xml

log4j:WARN No appenders could be found for logger  (org.apache.http.client.protocol.RequestAddCookies).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
java.lang.NullPointerException
at  com.relevantcodes.extentreports.support.RegexMatcher.getNthMatch(RegexMatcher.java:30)
at com.relevantcodes.extentreports.Logger.log(Logger.java:65)
at com.relevantcodes.extentreports.AbstractLog.log(AbstractLog.java:68)
at com.relevantcodes.extentreports.AbstractLog.log(AbstractLog.java:77)
at com.relevantcodes.extentreports.ExtentReports.log(ExtentReports.java:168)
at com.Selenium_Practice.TestNGExample.open(TestNGExample.java:30)
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:84)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
at org.testng.TestRunner.beforeRun(TestRunner.java:641)
at org.testng.TestRunner.run(TestRunner.java:609)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
at org.testng.TestNG.run(TestNG.java:1057)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
FAILED CONFIGURATION: @BeforeTest open
java.lang.NullPointerException
at java.lang.String.replace(Unknown Source)
at com.relevantcodes.extentreports.Logger.log(Logger.java:65)
at com.relevantcodes.extentreports.AbstractLog.log(AbstractLog.java:68)
at com.relevantcodes.extentreports.AbstractLog.log(AbstractLog.java:77)
at com.relevantcodes.extentreports.ExtentReports.log(ExtentReports.java:168)
at com.Selenium_Practice.TestNGExample.open(TestNGExample.java:30)
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:84)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
at org.testng.TestRunner.beforeRun(TestRunner.java:641)
at org.testng.TestRunner.run(TestRunner.java:609)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
at org.testng.TestNG.run(TestNG.java:1057)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

 SKIPPED CONFIGURATION: @AfterClass tearDown
 SKIPPED: First

 ===============================================
 Default test
 Tests run: 1, Failures: 0, Skips: 1
 Configuration Failures: 1, Skips: 1
 ===============================================


 ===============================================
 Default suite
 Total tests run: 1, Failures: 0, Skips: 1
 Configuration Failures: 1, Skips: 1
 ===============================================

[TestNG] Time taken by org.testng.reporters.EmailableReporter2@1afea7d: 218 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@104a311: 17 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@19a06ac: 384 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 53 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@18ed237: 142 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@e5c649: 520 ms

最佳答案

通过设置文件路径初始化报表后。

report.init("E:\\Report\\report.html", true);

在添加日志之前你必须开始测试

report.startTest("TestName");

bcoz 所有日志事件都添加到测试下。由于测试本身还没有开始,它会抛出一个空指针异常

代码:

@BeforeTest
public void open(){
    driver = new FirefoxDriver();
    driver.get("https://www.google.co.in/?gws_rd=ssl");
    driver.manage().window().maximize();
    report.init("E:\\Report\\report.html", true);
    report.startTest("TestName");//start the test before adding logs to it
    report.log(LogStatus.INFO, "Browser is up and running");
}//open

我已经测试了上面的代码,它工作正常。

希望这对你有帮助。如果你有任何疑问,请回来

关于java - 尝试在 TestNG 中使用 ExtentReports 生成测试报告时获取 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747315/

相关文章:

java - 如何在google kubernetes中调用后端LoadBalancer服务?

java - 有没有办法在本地时间之前触发一个 Action ?

java - 帮助 java 线程和执行器 : Executing several MySQL selects, 同时插入和更新

sql-server-2008-r2 - SSRS 2008 - 日期范围的多个分组

sql - SSRS - 已重命名 TempDB,现在订阅报告不再通过电子邮件发送

reporting-services - rsErrorLoadingCodeModule : what are the steps to deploy an assembly for use with Report Builder 2. 0?

java - 如何将java中的注释写入Jenkins日志?

python-2.7 - selenium firefox 中的 python 代理 headless 不工作

java - 如何通过 Selenium Webdriver 检索元素的 HTML?

java - 如何验证::after伪元素是否存在于selenium中