【问题标题】:How to run TestNG from command line如何从命令行运行 TestNG
【发布时间】:2012-08-07 11:14:02
【问题描述】:

究竟如何从命令行运行 .java TestNG 项目?

我已经阅读了TestNG文档,并尝试了以下方法无济于事:

C:\projectfred> java org.testng.TestNG testng.xml 

...在我的项目中使用以下 testng.xml 文件:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >  
<suite name="SuiteAll" verbose="1">
    <test name="TestAll">  
        <packages>  
            <package name="com.project.fred.tests"/>
        </packages>  
    </test>  
</suite>

我得到的错误是这样的:

Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/TestNG
Caused by: java.lang.ClassNotFoundException: org.testng.TestNG
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: org.testng.TestNG.  Program will exit.

显然,我在命令行中没有正确引用 TestNG。有谁知道如何让它工作?

【问题讨论】:

    标签: java command-line testng command-prompt


    【解决方案1】:

    试试下面的命令

    java -cp bin\;jars\* org.testng.TestNG testng.xml
    

    bin 包含项目的编译类,jars 文件夹包含执行 testng.xml 文件所需的 jars

    Make sure not to use bin\* instead of bin\ as it will lead you to errors.
    

    现在需要的 jars 将是您的 TestNG jar、jcommander jar 和 bsh jar,您可以从 here

    下载这些 jars

    您的项目结构如下所示 -

    Project
        |_ _ bin
          | _ _ your compiled classes
        |_ _ jars
          |_ _ testng.jar
          |_ _ jcommander.jar
          |_ _ bsh.jar
        |_ _ testng.xml
    

    我还写了一个 article,它解释了如何在创建新项目或在现有项目中运行 testng.xml 文件。希望您在文章中找到您的解决方案。

    【讨论】:

      【解决方案2】:

      我尝试了这篇文章中的所有内容,但结果发现我缺少一个 jar 文件。 这是我的解决方案:

      如果您遇到以下错误,请将 guice-4.2.2.jar 添加到您的 jar 文件中。如果您使用的是 maven,请添加以下依赖项。

      <dependency>
          <groupId>com.google.inject</groupId>
          <artifactId>guice</artifactId>
          <version>4.1.0</version>
      </dependency>
      
      
      Exception in thread "main" java.lang.NoClassDefFoundError: com/google/inject/Stage
              at org.testng.internal.Configuration.<init>(Configuration.java:33)
              at org.testng.TestNG.init(TestNG.java:216)
              at org.testng.TestNG.<init>(TestNG.java:200)
              at org.testng.TestNG.privateMain(TestNG.java:1312)
              at org.testng.TestNG.main(TestNG.java:1304)
      Caused by: java.lang.ClassNotFoundException: com.google.inject.Stage
              at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
              at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
              at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
              ... 5 more
      

      【讨论】:

        【解决方案3】:

        如果以上答案都不起作用,您可以在 IDE 中运行测试,获取类路径并在命令中使用它。 例如:如果您使用的是 Intellij IDEA,您可以在控制台顶部找到它(下面的屏幕截图)。

        单击突出显示的部分会展开并显示完整的类路径。

        需要删除文件夹内对jar的引用:JetBrains\IntelliJ IDEA Community Edition 2019.1.3

        java -cp "path_copied" org.testng.TestNG testng.xml

        【讨论】:

          【解决方案4】:

          我遇到了同样的问题,因为我从 Eclipse 下载了 TestNG 插件。这是我为完成工作所做的工作:

          1. 将 TestNG 添加到项目库后,在项目名称中创建一个文件夹作为 lib(名称可以是任何名称):

          2. 转到“C:\Program Files\Eclipse\eclipse-java-mars-R-win32-x86_64\eclipse\plugins”位置并复制com.beust.jcommander_1.72.0.jarorg.testng_6.14.2.r20180216145.jar 文件到创建的文件夹 (lib)。

          注意:文件是testng.jar和jcommander.jar

          1. 现在启动 CMD,导航到您的项目目录,然后键入:
            Java -cp C:\Users\User123\TestNG\lib*;C:\Users\User123\TestNG\bin org。 testng.TestNG testng.xml

          就是这样!
          如果您还有其他问题,请告诉我。

          【讨论】:

          • 我正在按照您在此处提出的建议进行操作,但出现错误错误:无法找到或加载主类 java 原因:java.lang.ClassNotFoundException:java 请帮助!
          • 使用 Eclipse 顶部菜单栏从项目菜单中清理项目。
          【解决方案5】:

          如果你使用 Maven,你可以很容易地从 cmd 行运行它,cd 到带有 testng.xml 的目录(或者你的任何名称,包含所有将运行的类的 xml)并运行它命令:

          mvn clean test -DsuiteXmlFile=testng.xml 
          

          这个页面有更详细的解释:How to run testng.xml from Maven command line

          我不知道你是否使用 Maven 很重要,所以我没有将它包含在我的搜索词中,我想我会在这里提到它,以防其他人和我有同样的情况。

          【讨论】:

            【解决方案6】:

            在浏览了各种帖子后,这对我在IntelliJ Idea 上的效果很好:

            java -cp "./lib/*;Path to your test.class"  org.testng.TestNG testng.xml
            

            这是我的目录结构:

            /lib
              -- all jar including testng.jar
            /out
              --/production/Example1/test.class
            /src
             -- test.java
            testing.xml
            

            所以通过这个命令执行:

            java -cp "./lib/*;C:\Users\xyz\IdeaProjects\Example1\out\production\Example1" org.testng.TestNG testng.xml
            

            我的项目目录Example1在路径中:

            C:\Users\xyz\IdeaProjects\
            

            【讨论】:

              【解决方案7】:

              以下命令对我有用。前提是所有必需的 jars,包括 testng jar 都保存在 lib 中。

              java -cp "lib/*" org.testng.TestNG testng.xml
              

              【讨论】:

                【解决方案8】:

                在 windows 中指定 jar 和 class 文件路径时,您需要使用分号作为分隔符。这解决了问题。
                假设类文件在 C:.

                java -cp ".;C:\testng.jar" org.testng.TestNG testing.xml
                

                【讨论】:

                  【解决方案9】:

                  准备MANIFEST.MF文件,内容如下

                  Manifest-Version: 1.0
                  Main-Class: org.testng.TestNG
                  

                  将所有测试和依赖类打包在同一个 jar 中,比如 tests.jar

                  jar cmf MANIFEST.MF tests.jar -C folder-with-classes/ .
                  

                  注意尾随“.”,将folder-with-classes/ 替换为正确的文件夹名称或路径。

                  使用如下内容创建testng.xml

                  <?xml version="1.0" encoding="UTF-8"?>
                  <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
                  <suite name="Tests" verbose="5">
                    <test name="Test1">
                      <classes>
                        <class name="com.example.yourcompany.qa.Test1"/>
                      </classes>
                    </test>  
                  </suite>
                  

                  com.example.yourcompany.qa.Test1 替换为您的测试类的路径。

                  运行你的测试

                  java -jar tests.jar testng.xml
                  

                  【讨论】:

                    【解决方案10】:

                    经过 2 天的尝试,我无法从

                    运行示例

                    http://www.tutorialspoint.com/testng/testng_environment.htm以下代码对我不起作用

                    C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
                    

                    解决方法如下: 我得出以下结论:首先安装eclipse,并下载TestNG插件。之后按照教程中的说明使用 javac 从 cmd 创建和编译测试类,并添加 testng.xml。要在 Windows 10 cmd 上运行 testng.xml,请运行以下行:

                    java -cp C:\Users\Lenovo\Desktop\eclipse\plugins\org.testng.eclipse_6.9.12.201607091356\lib\*;C:\Test org.testng.TestNG testng.xml
                    

                    澄清:C:\Users\Lenovo\Desktop\eclipse\plugins\org.testng.eclipse_6.9.12.201607091356\lib\* 上面的路径表示您通过安装 Eclipse 的 TESTNG 插件下载的 jcommander.jar 和 testng.jar 的位置。路径可能会有所不同,因此请确保只需打开 eclipse 的安装位置,转到插件并搜索 jcommander.jar。然后复制该位置,然后添加 * 以选择所有必要的 .jar。

                    C:\Test  
                    

                    上面的路径代表 testing.xml 在您的项目中的位置。 获取所有必要路径后,使用“;”附加它们。

                    我希望我对你们中的一些人有所帮助:)

                    【讨论】:

                      【解决方案11】:

                      非常感谢,它真的很有帮助。我能够使用命令行运行我的 TestNG 类,但我仍然想最后一次总结一下。

                      1) Set the classpath for the testng.jar in the environment variables
                      (either manually or via command line).
                      
                      2) Create a new folder "MyTest".
                      
                      3) Compile all your classes(testNG+java) and put them(.class files )
                      in a new folder "Mytest\bin".
                      
                      4) Put your 'testng.xml' and '.properties' files to "Mytest\bin"
                      again.
                      
                      5) Put all the .jar files (testng,selenium... etc) in a new folder
                      "Mytest\lib".
                      
                      6) Browse to the folder "bin" via command line and run the command
                      java -cp "..\lib\*;" org.testng.TestNG testng.xml
                      

                      这应该会运行您的 testNG 案例。

                      【讨论】:

                        【解决方案12】:

                        在 windows 问题上使用“;”作为分隔符已得到解决。

                        java -cp "path of class files; testng jar file path" org.testng.TestNG testng.xml
                        

                        例如:-

                        java -cp ".\bin;..\common_lib\*;" org.testng.TestNG testng.xml
                        

                        【讨论】:

                          【解决方案13】:

                          你需要在类路径下有testng.jar

                          试试C:\projectfred&gt; java -cp "path-tojar/testng.jar:path_to_yourtest_classes" org.testng.TestNG testng.xml

                          更新:

                          在 linux 下我运行了这个命令,它在 Windows 上也有类似的东西

                          test/bin# java -cp ".:../lib/*" org.testng.TestNG testng.xml
                          

                          目录结构:

                          /bin - All my test packages are under bin including testng.xml
                          /src - All source files are under src
                          /lib - All libraries required for the execution of tests are under this.
                          

                          一旦我编译了所有源代码,它们就会放在 bin 目录下。因此,在类路径中,我需要在此处指定 bin 目录和所有库(如 testng.xml、记录器等)的内容。如果您不想指定 testng.xml 可用的完整路径,也可以将 testng.xml 复制到 bin 文件夹。

                           /bin
                              -- testng.xml
                              -- testclasses
                              -- Properties files if any.
                           /lib
                              -- testng.jar
                              -- log4j.jar
                          

                          Update:

                          转到文件夹MyProject 并键入运行java 命令,如下所示:-

                          java -cp ".: C:\Program Files\jbdevstudio4\studio\plugins\*" org.testng.TestNG testng.xml
                          

                          我相信 testng.xml 文件在C:\Users\me\workspace\MyProject 下,如果不是,请给出testng.xml 文件的完整路径

                          【讨论】:

                          • 谢谢。你能举一个确切路径的例子吗?我尝试过类似 C:\projectfred> java -cp "C:\path-tojar\testng.jar:C:\path_to_yourtest_classes" org.testng.TestNG testng.xml 之类的方法,但是您可以看到有很多冒号在那里,它会抛出一个错误。
                          • 您能告诉我您的测试类和相关库可用的层次结构吗?
                          • (Windows 7 机器)测试类:C:\Users\me\workspace\MyProject(这是我所有的 TestNG .java 文件所在的位置)。相关库: C:\Program Files\jbdevstudio4\studio\plugins 。这就是你所追求的吗?
                          • 是的,我试过了,非常感谢您的努力。我得到与以前相同的错误, NoClassDefFoundError for org.testng.TestNG 。我正在为 Eclipse 使用 TestNG 插件,这有关系吗?
                          • 在这种情况下,您的类路径下没有测试类。您是否在您的类文件所在的同一目录下?当您使用. 时,这仅表示当前目录,因此如果您不在类文件的目录中,我建议您使用类文件可用文件夹的完整路径。仅供参考,我能够使用我在答案中提到的命令在我的机器上完美地运行所有测试。如果您无法运行,请检查类路径
                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 2014-11-02
                          • 1970-01-01
                          • 1970-01-01
                          • 2015-11-25
                          • 1970-01-01
                          • 2019-07-02
                          • 1970-01-01
                          相关资源
                          最近更新 更多