eclipse中的测试NG测试失败,错误NoClassDefFoundError:org / springframework / test / context / testng / AbstractTestNGSpringContextTests

时间:2016-04-23 18:30:35

标签: java eclipse spring maven testng

 java.lang.NoClassDefFoundError: org/springframework/test/context/testng/AbstractTestNGSpringContextTests
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1012)
at java.lang.ClassLoader.loadClass(ClassLoader.java:413)
at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.testng.internal.ClassHelper.forName(ClassHelper.java:96)
at org.testng.xml.XmlClass.loadClass(XmlClass.java:78)
at org.testng.xml.XmlClass.init(XmlClass.java:73)
at org.testng.xml.XmlClass.<init>(XmlClass.java:59)
at org.testng.xml.TestNGContentHandler.startElement(TestNGContentHandler.java:544)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(XMLDTDValidator.java:766)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1344)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2787)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
at org.testng.xml.XMLParser.parse(XMLParser.java:39)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:17)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:10)
at org.testng.xml.Parser.parse(Parser.java:168)
at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:311)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:103)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)

异常的堆栈跟踪如上所示

测试类是使用maven进行编译和依赖关系管理的项目的一部分。我看到Eclipse中的“Referenced Library”部分包含项目的所有依赖项。类路径条目包含spring依赖项。然而,我在使用Eclipse的test ng插件运行测试类时看到了这个错误。请帮我解决这个异常!我正在艰难地修复Eclipse中的测试问题: - (

我已经尝试并发现无法正常工作的解决方案 -

  1. 清理/建造项目。
  2. 卸载/重新安装testng eclipse插件
  3. 重启eclipse。
  4. 我不认为弄清楚该类在异常中提到的jar并将jar添加到classpath是解决此问题的正确方法,因为测试类所属的项目已经具有所有依赖关系。

    如何确保测试环境可以访问所有必需的jar?

2 个答案:

答案 0 :(得分:0)

将它放到pom.xml <dependencies>部分并重新编译你的项目:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.3.2.RELEASE</version>
        <scope>test</scope>
</dependency>

范围标记意味着它不会被编译到最终的jar / war中。无论你做什么。

答案 1 :(得分:0)

当我第一次执行新的TESTNG项目时,我遇到了类似的问题。 解决方案:当您创建新的测试NG项目时,这是一个小问题,请确保您已添加所有引用的库和TESTNG库。添加库Guava 23.6解决了我的问题。 如果你也犯了这个愚蠢的错误,那试试吧。