TestNG ant 任务在 Mac OS X 上失败并出现错误:未找到测试套件 [英] TestNG ant task fails on Mac OS X with error: No test suite found
问题描述
我有一个主要在 Windows 中开发的 Java 项目.我有一些我在 TestNG 中编写的单元测试,我也运行了......我正在使用 TestNG 版本 5.14.1
I have a Java project that I've been developing primarily in windows. I have some unit tests that I've written in TestNG that I also run... I'm using TestNG version 5.14.1
我的项目在 OS X 下编译得很好.TestNG 测试也编译得很好.但是当我尝试执行单元测试时,任务失败并出现以下错误:
My project compiles fine under OS X. The TestNG tests also compile fine.. However when I try to execute the unit tests the task fails with the following error:
Omair-Inams-MacBook-Pro:PNServices omairkhawaja$ ant clean testng
...
compile-and-jar:
[mkdir] Created dir: /Users/omairkhawaja/source/my-project/common/server/PNServices/build/classes
[javac] Compiling 131 source files to /Users/omairkhawaja/source/my-project/common/server/PNServices/build/classes
[javac]
[copy] Copying 7 files to /Users/omairkhawaja/source/my-project/common/server/PNServices/build/classes
[jar] Building jar: /Users/omairkhawaja/source/my-project/common/server/PNServices/build/jars/PNServices.jar
compileTest:
[mkdir] Created dir: /Users/omairkhawaja/source/my-project/common/server/PNServices/build/test/classes
[javac] /Users/omairkhawaja/source/my-project/common/server/PNServices/buildtools/build-test.xml:28: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 14 source files to /Users/omairkhawaja/source/my-project/common/server/PNServices/build/test/classes
[javac] /Users/omairkhawaja/source/my-project/common/server/PNServices/src/test/java/com/corp/monitoring/my-project/service/discovery/PnDiscoveryServiceTest.java:234: warning: non-varargs call of varargs method with inexact argument type for last parameter;
[javac] cast to java.util.List<java.lang.Object> for a varargs call
[javac] cast to java.util.List<java.lang.Object>[] for a non-varargs call and to suppress this warning
[javac] when(mdo.getList("ineligibleDevices")).thenReturn(ineligibleResultList, null);
[javac] ^
[javac] /Users/omairkhawaja/source/my-project/common/server/PNServices/src/test/java/com/corp/monitoring/my-project/service/discovery/PnDiscoveryServiceTest.java:252: warning: non-varargs call of varargs method with inexact argument type for last parameter;
[javac] cast to java.util.List<java.lang.Object> for a varargs call
[javac] cast to java.util.List<java.lang.Object>[] for a non-varargs call and to suppress this warning
[javac] when(mdo.getList("ineligibleDevices")).thenReturn(null, null);
[javac] ^
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 2 warnings
[mkdir] Created dir: /Users/omairkhawaja/source/my-project/common/server/PNServices/build/test/jar
[jar] Building jar: /Users/omairkhawaja/source/my-project/common/server/PNServices/build/test/jar/agent-test.jar
testng:
[mkdir] Created dir: /Users/omairkhawaja/source/my-project/common/server/PNServices/build/testng
[mkdir] Created dir: /Users/omairkhawaja/source/my-project/common/server/PNServices/build/coverage
[testng] [TestNGAntTask] TESTNG PASSED @/var/folders/ft/p4_xg83109v465y_ktnrq29m0000gn/T/testng6488341970286082385 WHICH CONTAINS:
[testng] -usedefaultlisteners
[testng] false
[testng] -d
[testng] /Users/omairkhawaja/source/my-project/common/server/PNServices/build/testng
[testng] -groups
[testng] unit
[testng] -listener
[testng] org.uncommons.reportng.HTMLReporter;org.testng.reporters.JUnitXMLReporter;org.uncommons.reportng.JUnitXMLReporter
[testng] -suitename
[testng] Ant suite
[testng] -testname
[testng] Ant test
[testng] /Users/omairkhawaja/source/my-project/common/server/PNServices/buildtools/suite.xml
[testng] Listening for transport dt_socket at address: 5005
[testng] [ERROR]: No test suite found. Nothing to run
[testng] java.io.FileNotFoundException: test-output/testng.css (No such file or directory)
[testng] at java.io.FileOutputStream.open(Native Method)
[testng] at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
[testng] at java.io.FileOutputStream.<init>(FileOutputStream.java:145)
[testng] at org.testng.internal.Utils.writeResourceToFile(Utils.java:618)
[testng] at org.testng.reporters.HtmlHelper.generateStylesheet(HtmlHelper.java:25)
[testng] at org.testng.reporters.SuiteHTMLReporter.generateReport(SuiteHTMLReporter.java:49)
[testng] at org.testng.TestNG.run(TestNG.java:613)
[testng] at org.testng.TestNG.privateMain(TestNG.java:999)
[testng] at org.testng.TestNG.main(TestNG.java:936)
[testng] ERROR WHILE WRITING TO test-output/index.html
[testng] java.io.IOException: No such file or directory
[testng] at java.io.UnixFileSystem.createFileExclusively(Native Method)
[testng] at java.io.File.createNewFile(File.java:883)
[testng] at org.testng.internal.Utils.writeFile(Utils.java:168)
[testng] at org.testng.reporters.SuiteHTMLReporter.generateIndex(SuiteHTMLReporter.java:138)
[testng] at org.testng.reporters.SuiteHTMLReporter.generateReport(SuiteHTMLReporter.java:75)
[testng] at org.testng.TestNG.run(TestNG.java:613)
[testng] at org.testng.TestNG.privateMain(TestNG.java:999)
[testng] at org.testng.TestNG.main(TestNG.java:936)
BUILD SUCCESSFUL
Total time: 13 seconds
Omair-Inams-MacBook-Pro:PNServices omairkhawaja$
Omair-Inams-MacBook-Pro:PNServices omairkhawaja$ pwd
/Users/omairkhawaja/source/my-project/common/server/PNServices
Omair-Inams-MacBook-Pro:PNServices omairkhawaja$ ls -l buildtools/ | grep suite
-rw-r--r-- 1 omairkhawaja staff 858 5 Apr 15:43 suite.xml
这是我正在使用的 testng 目标
This is the testng target I'm using
<testng outputDir="${testng.report.dir}"
workingDir="${test.resources.dir}"
haltOnfailure="false"
useDefaultListeners="false"
listeners="org.uncommons.reportng.HTMLReporter,org.testng.reporters.JUnitXMLReporter,org.uncommons.reportng.JUnitXMLReporter" dumpCommand="true"
groups="unit" >
<jvmarg value="-Dlog4j.configuration=file:log4j.properties" />
<jvmarg value="-Dquest.debug=1" />
<jvmarg value="-Xdebug"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7007"/>
<sysproperty key="org.uncommons.reportng.title" value="PNServices Unit Tests"/>
<classpath>
<fileset refid="test-dependencies.fileset"/>
<fileset dir="${fglam.devkit.home}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${fglcore.home}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${build.jars.dir}">
<include name="*.jar"/>
</fileset>
<fileset dir="${test.resources.dir}">
<include name="log4j.properties"/>
</fileset>
<fileset dir="${build.test.dir}/jar" includes="agent-test.jar" />
</classpath>
<xmlfileset dir="${basedir}/buildtools" includes="suite.xml"/>
</testng>
这是我的suite.xml文件
This is my suite.xml file
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<!--Test suite name must not be changed as it is referenced in sonar-project.properties -->
<suite name="TestSuite" verbose="1" >
<!-- Test MUST be named TEST-xxxx as Sonar requires this file naming format to be able to parse test results-->
<test name="TEST-Unit">
<packages>
<package name="com.corp.monitoring.*" />
</packages>
<groups>
<run>
<exclude name="brokenTests" />
<include name="unit" />
</run>
</groups>
</test>
</suite>
正如开头的命令行输出所示,我的suite.xml 文件位于适当的目录中.. 我不确定为什么TestNG 在Windows 上运行成功,但在OS X 上运行失败.. 有什么想法吗?
As the command-line output in the beginning shows, my suite.xml file is located in the appropriate directory.. I'm not sure why TestNG runs successfully on windows but fails to run on OS X .. Any ideas?
推荐答案
该问题是由于使用 maven ant 任务下载 ReportNG 依赖项而发生的,该任务还声明依赖于一个古老的 TestNG 版本,该版本在类路径并导致 testng ant 目标失败.
The issue happened due to a ReportNG dependency being downloading using the maven ant task which also declares a dependency on an ancient TestNG version which was being picked up first in the classpath and causing the testng ant target to fail.
我最近在 Windows 上遇到了类似的问题.. 并在挣扎了一段时间后发现了问题所在.. 我正在尝试使用 maven 依赖项 ant 任务导入 ReportNG 依赖项...并且它正在下载旧版本的 TestNG... 正如 Marcin Zajączkowski 要在 maven 中使用 reportNG,您需要排除可传递的 TestNG 依赖项.. 我不知道在使用 ant maven 任务时是否有可能的同义修复.
I ran into a similar issue on Windows recently .. and after floundering for a while discovered what the issue was.. I was attempting importing the ReportNG dependency using the maven dependency ant task... and it was downloading an old version of TestNG... As noted by Marcin Zajączkowski to use reportNG in maven you need to exclude the transitive TestNG dependency.. I don't know if there's a synonymous fix possible when using the ant maven task.
这篇关于TestNG ant 任务在 Mac OS X 上失败并出现错误:未找到测试套件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!