【问题标题】:Running TestNG via Command Line通过命令行运行 TestNG
【发布时间】:2017-01-12 05:19:11
【问题描述】:

一些注意事项:
1.我最初使用的TestNG jar来自我们java项目中的maven repo。以下所有方法均使用 maven testNG jar 和新的 testNG 6.9.12 下载进行了测试。
2.我可以在eclipse中运行文件just file。只有当我尝试从命令行运行时才会出现问题。
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的cmets对方法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:
    我在包含Automation/framework/dataModel/CaseInfo 的已编译jar 所在的类路径中添加了C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\lib\*。现在我收到另一个错误:

    [TestNG] [ERROR]
    Cannot instantiate class NBS.testcases.LoginWithBayanUser
    

    希望您能提供帮助!谢谢!

  • 【问题讨论】:

    • 我在帖子中引用了该 URL 作为我尝试过但不起作用的方法之一。 (方法 1,来源 2。)遗憾的是,由于缺少代表,我不能发布超过 2 个链接,所以我不得不将其作为纯文本。

    标签: java eclipse selenium-webdriver testng


    【解决方案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
    

    【讨论】:

    • 感谢您的提示!我在 org.testng.TestNG 之前删除了额外的“\”......它产生了不同的结果,但我认为我越来越接近了。我正在编辑帖子以获取详细信息。谢谢!
    • @Kenos 从 `C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\target\test-classes 运行命令
    • 试过这样做,但我得到了一个FileNotFoundException...[TestNG] [ERROR] No test suite found. Nothing to run。我的 testng xml 文件位于C:\Users\johndoe\Documents\My Docs\03_OE\Java\workspace\KeywordDrivenTool\JavaTestNBS\target\test-classes\testngRunner
    • 更新:投票为正确答案。我的测试课程似乎有问题。这些类在项目引用的 jar 中引用另一个(编译的)类以获取常用功能(如启动 webdriver 等)。我尝试使用没有任何依赖关系的简单类进行测试,并且它有效。我必须单独研究这个问题。谢谢!
    • 我把 testng.xml、bin、lib 和 src 文件夹放在目录下我把所有的 selenium jars 放在 lib 目录下,SampleNavigation.class 在 bin 目录下,SampleNavigation.java 在 src 下使用以下命令出现错误: java -cp /tmp/seltest/bin;/tmp/seltest/lib/* org.testng.TestNG testng.xml /tmp/seltest是目录是我的根目录
    【解决方案2】:

    我花了整整一个下午来解决这个问题。这是我的做法,也许它会对你有所帮助:

    错误:“Cannot find class in classpath”。这是你项目的jar错误引起的。我按照别人的指示,总是失败。当我使用eclipse将我的项目“导出”到jar文件时。它有效!

    总结:

    1. 在 eclipse.File->Export 中导出 jar 文件。 note the red box

    2. 设置环境变量。 设置 NG_LIB=[你的 testng 库所在的目录] set JAVA_CLIENT=[dir of your java-client.jar]--- 我的项目依赖于 java-client。

    并设置其他依赖。

    1. set CLASSPATH=%NGLIB%*;%JAVA_CLIENT%\java-client-5.0.0-BETA1.jar;[您导出的项目 jar];
    2. java org.testng.TestNG testMainXML.xml

    如果遇到“无法读取类 XXX 的方法”,则表示编译器找到了您未提供的依赖项。您应该按照步骤 2,设置依赖项的 dir,并将依赖项 jar 添加到步骤 3。 meet "Unable to read methods on class XXX"

    【讨论】:

    • 您是如何创建项目的 .jar 文件的。我认为您只能创建 java 类的 .jar 文件,其中我们有驱动一切的 main() 方法。这里我们使用 testNG 注解。
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 2018-08-05
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2018-08-25
    相关资源
    最近更新 更多