【发布时间】:2014-09-21 19:12:00
【问题描述】:
似乎这是关于 SO 的一个非常“流行”的问题,没有明确的解决方法,但我还是在问这个问题,因为我可以提供更多细节。我正在使用 STS v3.4.0.RELEASE 和 TestNG v6.8.6.20141201_2240。我还有 Eclipse 3.0.4.v-2_11-201407232043 的 ScalaIDE 插件。
我有一个简单的测试(我的 src/test/java 中的 MusicalTest.java)及其对应的 testsuite.xml 文件,该文件概述了这个类以及要包含的特定方法。我将 xml 文件作为 TestNG 测试运行,没有问题,一切都按预期运行;我的 testsuite.xml 文件看起来像这样:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="1" verbose="1" name="Fishy Tests"
skipfailedinvocationcounts="false" junit="false" parallel="methods"
data-provider-thread-count="1" annotations="JDK">
<test verbose="2" name="MusicalTestSuite" annotations="JDK" preserve-order="true">
<classes>
<class name="com.rock.and.roll.MusicalTest"/>
</classes>
</test>
</suite>
现在我创建了一个名为 MusicalScalaTest.scala 的新类(在我的例子中,我在与上述测试相同的包中创建了一个 Scala 类)。我继续并将其包含在我的 testsuite.xml 中,如下所示:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="1" verbose="1" name="Fishy Tests"
skipfailedinvocationcounts="false" junit="false" parallel="methods"
data-provider-thread-count="1" annotations="JDK">
<test verbose="2" name="MusicalTestSuite" annotations="JDK" preserve-order="true">
<classes>
<class name="com.rock.and.roll.MusicalTest"/>
<class name="com.rock.and.roll.MusicalScalaTest"/>
</classes>
</test>
</suite>
现在,当我将 xml 文件作为 testNG 测试运行时,我遇到了以下错误:
org.testng.TestNGException:
Cannot find class in classpath: com.rock.and.roll.MusicalTest
at org.testng.xml.XmlClass.loadClass(XmlClass.java:81)
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:543)
at ........ <truncated>
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
有趣的是,它并没有抱怨 MusicalScalaTest,而是抱怨 MusicalTest。我继续在 XML 文件中注释掉 MusicalScalaTest 类,认为这就是造成混乱的原因,但是在运行 testNG 测试时,我又遇到了同样的错误!在此之后,我删除 MusicalScalaTest.scala 类并从 xml 中删除“注释”行。没有骰子。我右键单击该项目并执行 Run As -> Mvn Clean。没有骰子。我重新启动我的 IDE,执行 Mvn Clean 和 Maven 更新项目,然后刷新。没有骰子。我卸载了 testNG 插件,运行一个 mvn clean test-compile 来确定,然后执行 maven update project 的常规动作,然后进行刷新。然后我重新安装 testNG IDE 并试一试相同的 xml。没有骰子。
坦率地说,this smells like a test-ng plugin-based issue 缓存了一些它不愿意清除的错误。我尝试运行同一个项目的任何其他测试套件 xml 文件,他们都抱怨同样的错误!所以基本上我所有的 testSuite xml 都无法使用。
有人对后续步骤有什么建议吗?我试图在 IDE 中完成所有这些工作,而不是转移到终端并通过那里运行 testNG。如果您认为此时不值得,请发表评论。
【问题讨论】:
标签: java scala eclipse-plugin testng