一些注意事项:
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

09-11 19:31