ExtentReport throwing exception - Cannot instantiate class | Selenium Forum
M
Posted on 30/08/2016
Am getting below exception while trying to use extent report along with testng. Am using trying it with the steps provided in the datadriven framework.
Tried changing most of the testng and extenet reports version but didnt work. Am getting same error for almost all of them.

org.testng.TestNGException:
Cannot instantiate class com.citi.core.ddf.testcases.DummyTestA
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:38)
at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:382)
at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:295)
at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:117)
at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:183)
at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:128)
at org.testng.TestRunner.initMethods(TestRunner.java:415)
at org.testng.TestRunner.init(TestRunner.java:241)
at org.testng.TestRunner.init(TestRunner.java:211)
at org.testng.TestRunner.<init>(TestRunner.java:165)
at org.testng.remote.support.RemoteTestNG6_5$1.newTestRunner(RemoteTestNG6_5.java:26)
at org.testng.remote.support.RemoteTestNG6_5$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG6_5.java:59)
at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:584)
at org.testng.SuiteRunner.init(SuiteRunner.java:159)
at org.testng.SuiteRunner.<init>(SuiteRunner.java:114)
at org.testng.TestNG.createSuiteRunner(TestNG.java:1260)
at org.testng.TestNG.createSuiteRunners(TestNG.java:1247)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1101)
at org.testng.TestNG.run(TestNG.java:1018)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
... 21 more
Caused by: java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.xerces.parsers.AbstractDOMParser.startDocument(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
at com.relevantcodes.extentreports.Configuration.getConfigurationMap(Configuration.java:38)
at com.relevantcodes.extentreports.Report.loadConfig(Report.java:445)
at com.relevantcodes.extentreports.Report.<init>(Report.java:566)
at com.relevantcodes.extentreports.ExtentReports.<init>(ExtentReports.java:66)
at com.relevantcodes.extentreports.ExtentReports.<init>(ExtentReports.java:195)
at com.citi.core.ddf.util.ExtentManager.getInstance(ExtentManager.java:16)
at com.citi.core.ddf.testcases.DummyTestA.<init>(DummyTestA.java:21)
... 26 more
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 55 more



Am using below version of TestNg and Extentreports
<!-- Test NG -->
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.6</version>
<scope>test</scope>
</dependency>
<!-- Extent Report -->
<dependency>
<groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.40.1</version>
</dependency>

Below is my code:

package com.qa.core.ddf.testcases;

import java.io.File;

import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;

import com.qa.core.ddf.base.BaseTest;
import com.qa.core.ddf.util.ExtentManager;
import com.relevantcodes.extentreports.DisplayOrder;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;


public class DummyTestA extends BaseTest{

ExtentReports rep=ExtentManager.getInstance();
ExtentTest test= rep.startTest("DummyTestA");

@Test(priority=1)
public void testA1()
{

test.log(LogStatus.INFO, "Starting the test");
test.log(LogStatus.INFO, "Opening the browser");
openBrowser("Chrome");
test.log(LogStatus.INFO, "Navigate to the URL");
navigate("appURL");
test.log(LogStatus.INFO, "Search for the News");
type("txtSearch_xpath","sports");
click("cmdSubmit_xpath");
test.log(LogStatus.PASS, "DummyTest A Passed");
}

@AfterMethod
public void quit()
{
rep.endTest(test);
rep.flush();
}

@Test(priority=2,dependsOnMethods={"testA1"})
public void testA2()
{
Assert.fail("test failure");
}

@Test(priority=3,dependsOnMethods={"testA1","testA2"})
public void testA3()
{

}

}


Extent Manager Class:

package com.qa.core.ddf.util;

import java.io.File;

import com.relevantcodes.extentreports.DisplayOrder;
import com.relevantcodes.extentreports.ExtentReports;

public class ExtentManager {

public static ExtentReports extent;

public static ExtentReports getInstance()
{

if (extent==null) {
extent=new ExtentReports(System.getProperty("user.dir")+"//Reports//report.html",true,DisplayOrder.NEWEST_FIRST);
extent.loadConfig(new File(System.getProperty("user.dir")+"//ReportsConfig.xml"));
extent.addSystemInfo("Selenium Version","2.28.0").addSystemInfo("Environment","QA");
}
return extent;
}


}

M
Replied on 30/08/2016

Was going through few blogs and resolved the exception. Adding the below dependency in pom.xml solved the issue.

<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>

I have no idea , how this resolved the issue. Please you please let me know what is the relation with this dependency and extent reports.


M
Replied on 31/08/2016

there is bug in the software.

so we use a specific version.