一些注意事项:
1.我最初使用的TestNG jar来自我们Java项目中的Maven回购。下面的所有方法均已通过maven testNG jar和全新的testNG 6.9.12下载进行了测试。
2.我可以在eclipse中运行该文件。仅在尝试从命令行运行时遇到问题。
3.最终目标是通过按javafx应用程序按钮来触发命令行以运行测试。如果提供的解决方案避免在cmd中键入绝对路径,因为该应用程序将在不同的计算机上使用,我将不胜感激,但是只要我可以在我的计算机上运行它,我就会尝试分别找出其余的路径: )
4.从我在网上看到的来看,尝试运行testng xml文件时遇到了不同的问题。如果这个堆栈问题跟着其他一系列与运行文件有关的问题,请多多包涵。提前致谢。
问题:
我正在尝试使用命令行运行testNG“ test.xml”。
网上有很多指南,但没有一个对我有用。
到目前为止,我尝试了以下一些方法:
方法1
资料来源:
1. https://www.safaribooksonline.com/library/view/testng-beginners-guide/9781782166009/ch02s05.html
2. http://stackoverflow.com/questions/11896791/how-to-run-testng-from-command-line
开放式CMD
CD到包含test.xml文件的文件夹
语法:java -cp "[complete path to testNG jar]:[complete path to the compiled java classes to run]" org.testng.TestNG [testng xml file name]
我输入的实际CMD输入:java -cp "C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\org\testng\testng\6.9.10\testng-6.9.10.jar:C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\target\test-classes\NBS\testcases" org.testng.TestNG test.xml
结果:
Error: Could not find or load main class org.testng.TestNG
我也尝试用替换
[complete path to testNG jar]
。就像上面第二个源链接上建议的java -cp ".:C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\target\test-classes\NBS\testcases" org.testng.TestNG test.xml
一样,并得到了相同的错误。方法二
资源:
1.
https://www.tutorialspoint.com/testng/testng_environment.htm
设置环境变量:
TESTNG_HOME = C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\org\testng\testng\6.9.10
设置环境变量:
CLASSPATH = %CLASSPATH%;%TESTNG_HOME%\testng-6.9.10.jar
CD到包含test.xml文件的文件夹
语法:
java -cp "[complete path to the compiled java classes to run]" org.testng.TestNG [testng xml file name]
实际输入:
java -cp "C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\target\test-classes\NBS\testcases" org.testng.TestNG test.xml
结果:
Error: Could not find or load main class org.testng.TestNG
方法3
资源:
1.
http://stackoverflow.com/questions/28303723/could-not-find-or-load-main-class-org-testng-testng
CD到包含test.xml文件的文件夹
输入:
java -cp ".;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\org\testng\testng\6.9.10\testng-6.9.10.jar" org.testng.TestNG test.xml
结果:
java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException
然后我尝试根据
http://stackoverflow.com/questions/7100821/suddenly-cant-run-testng-tests-from-ant-testng-caused-by-java-lang-classnot
的注释对方法3进行故障排除下载一个新的testNG jar文件。结果还是一样。
在类路径中添加jcommander.jar:
java -cp ".;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\org\testng\testng\6.9.10\testng-6.9.10.jar;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\com\beust\jcommander\1.48\jcommander-1.48.jar" org.testng.TestNG test.xml
结果:
[TestNG] [ERROR]
Cannot find class in classpath: NBS.testcases.LoginWithBayanUser
看到上面的错误,我在classpath中添加了已编译的Java类路径:
java -cp ".;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\org\testng\testng\6.9.10\testng-6.9.10.jar;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\com\beust\jcommander\1.48\jcommander-1.48.jar;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\target\test-classes\NBS\testcases" org.testng.TestNG test.xml
结果:
[TestNG] [ERROR]
Cannot find class in classpath: NBS.testcases.LoginWithBayanUser
总结一下:
我认为我最接近的尝试是在故障排除方法3之后,但仍然无法运行xml。相同的xml在eclipse中运行。
命令细目:
完整:
java -cp ".;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\org\testng\testng\6.9.10\testng-6.9.10.jar;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\com\beust\jcommander\1.48\jcommander-1.48.jar;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\target\test-classes\NBS\testcases" org.testng.TestNG test.xml
第一部分:
java -cp
第二部分:
"[.];[full path to testNG jar];
第三部分:
"[full path to jcommander jar];
第四部分:
"[full path to compiled java classes]"
第五部分:
org.testng.TestNG [testNG xml file name]
在[testNG xml文件目录]中执行的命令
请帮忙!提前致谢!
================================================== =====
编辑1:
我按照Julien Herr的建议从编译的Java类文件夹中删除了多余的文件夹,这产生了不同的结果。我想我越来越近了,但仍然无法跑步。
[TestNGClassFinder] Warning: Can't link and determine methods of class NBS.testcases.LoginWithBayanUser
[TestNGClassFinder] Warning: Can't link and determine methods of class NBS.testcases.LoginWithBayanUser2
[[TestNGClassFinder]] Unable to read methods on class NBS.testcases.LoginWithBayanUser - unable to resolve class reference Automation/framework/dataModel/CaseInfo
[[TestNGClassFinder]] Unable to read methods on class NBS.testcases.LoginWithBayanUser2 - unable to resolve class reference Automation/framework/dataModel/CaseInfo
[TestNG] Running:
C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\target\test-classes\testngRunner\test.xml
===============================================
Suite1
Total tests run: 0, Failures: 0, Skips: 0
===============================================
这是我的test.xml文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite1" verbose="1" parallel="classes" thread-count="2" preserve-order="true">
<test name="Regression suite 1" >
<parameter name="globalXlsDataIndex" value="1"/>
<classes>
<class name="NBS.testcases.LoginWithBayanUser" />
<class name="NBS.testcases.LoginWithBayanUser2" />
</classes>
</test>
</suite>
重申一下,相同的xml文件从eclipse中运行。
谢谢!
================================================== =====
编辑2:
我在包含
C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\lib\*
的已编译jar所在的类路径中添加了Automation/framework/dataModel/CaseInfo
。现在我又遇到了一个错误:[TestNG] [ERROR]
Cannot instantiate class NBS.testcases.LoginWithBayanUser
希望能对您有所帮助!谢谢!
最佳答案
尝试:
java -cp ".;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\org\testng\testng\6.9.10\testng-6.9.10.jar;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\Maven\m2\repository\com\beust\jcommander\1.48\jcommander-1.48.jar;C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\target\test-classes" org.testng.TestNG test.xml