通过命令行运行TestNG

时间:2017-01-12 05:19:11

标签: java eclipse selenium-webdriver testng

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

  • 打开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一样,也得到了相同的错误。

    方法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
  • 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 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
    

    希望你能帮忙!谢谢!

  • 2 个答案:

    答案 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:

    1. 在eclipse.File-&gt;导出中导出jar文件。 note the red box

    2. 设置环境变量。 设置NG_LIB = [你的testng lib的目录] 设置JAVA_CLIENT = [java-client.jar的目录] ---我的项目依赖于java-client。

    3. 并设置其他依赖项。

      1. 设置CLASSPATH =%NGLIB%*;%JAVA_CLIENT%\ java-client-5.0.0-BETA1.jar; [您导出的项目jar];
      2. java org.testng.TestNG testMainXML.xml
      3. 如果遇到“无法读取类XXX上的方法”,则表示编译器找到了您未提供的依赖关系。您应该按照步骤2,设置依赖关系的目录,并将依赖关系jar添加到步骤3中。 meet "Unable to read methods on class XXX"