一些注意事项:
1.我最初使用的TestNG jar来自我们java项目中的maven repo。以下所有方法均使用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
java -cp "[complete path to testNG jar]:[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\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
一样,也得到了相同的错误。
方法2
来源:
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
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
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进行问题排查
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
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 classes文件夹中删除了额外的文件夹,它产生了不同的结果。我想我越来越近但仍无法跑步。
[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\*
,其中包含Automation/framework/dataModel/CaseInfo
的已编译jar。现在我又收到了另一个错误:
[TestNG] [ERROR]
Cannot instantiate class NBS.testcases.LoginWithBayanUser
希望你能帮忙!谢谢!
答案 0 :(得分:1)
尝试:
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
答案 1 :(得分:1)
我花了一整个下午来解决这个问题。这是我的做法,也许它会帮助你:
错误:“无法在类路径中找到类”。它是由你的项目的错误jar引起的。我遵循别人的方向,总是失败。当我使用eclipse将我的项目“导出”到jar文件时。它作品!
Summry:
在eclipse.File-&gt;导出中导出jar文件。 note the red box
设置环境变量。 设置NG_LIB = [你的testng lib的目录] 设置JAVA_CLIENT = [java-client.jar的目录] ---我的项目依赖于java-client。
并设置其他依赖项。
如果遇到“无法读取类XXX上的方法”,则表示编译器找到了您未提供的依赖关系。您应该按照步骤2,设置依赖关系的目录,并将依赖关系jar添加到步骤3中。 meet "Unable to read methods on class XXX"