Java 如何从命令行运行TestNG

Java 如何从命令行运行TestNG,java,command-line,testng,command-prompt,Java,Command Line,Testng,Command Prompt,如何从命令行运行.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">

如何从命令行运行.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>

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

您需要在类路径下设置
testng.jar

请尝试
C:\projectfred>java-cp“path-to-jar/testng.jar:path\u-to\u-yourtest\u-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.
/lib
  -- all jar including testng.jar
/out
  --/production/Example1/test.class
/src
 -- test.java
testing.xml
一旦我编译了所有的源代码,它们就会放在bin目录下。因此,在类路径中,我需要指定bin目录的内容和所有库,如testng.xml、logger等。如果不想指定testng.xml可用的完整路径,请将testng.xml复制到bin文件夹

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

转到文件夹
MyProject
并按如下所示方式键入run java命令:-

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

我相信testng.xml文件位于
C:\Users\me\workspace\MyProject
下,如果没有,请提供
testng.xml
文件的完整路径在windows中指定jar和类文件路径时,需要使用分号作为分隔符。这就解决了问题。
假设类文件位于C:

解决了在windows上使用“;”作为分隔符的问题

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


非常感谢,真的很有帮助。。我能够使用命令行运行我的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案例。

经过两天的努力,我终于明白了为什么我无法从中运行示例

以下代码对我不起作用

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\u 6.9.12.201607091356\lib\*
上面的路径表示jcommander.jar和testng.jar的位置,这是您通过安装eclipse的testng插件下载的。路径可能会有所不同,因此请确保打开eclipse的安装位置,转到插件并搜索jcommander.jar。然后复制该位置,然后添加*以选择所有必要的.jar

C:\Test  
上面的路径表示testing.xml在项目中的位置。 在获得所有必要的路径后,使用“;”追加它们


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

准备
MANIFEST.MF
文件,其中包含以下内容

Manifest-Version: 1.0
Main-Class: org.testng.TestNG
将所有测试和依赖类打包在同一个jar中,比如说
tests.jar

jar cmf MANIFEST.MF tests.jar -C 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>

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

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

  • 转到“C:\Program Files\Eclipse\Eclipse-java-mars-R-win32-x86\u 64\Eclipse\plugins”位置,将com.beust.jcommander\u 1.72.0.jarorg.testng\u 6.14.2.r20180216145.jar文件复制到创建的文件夹(lib)

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

  • 现在启动CMD,导航到项目目录,然后键入:
    Java-cpc:\Users\User123\TestNG\lib*;C:\Users\User123\TestNG\bin org.TestNG.TestNG TestNG.xml
  • 就这样

    如果您还有任何问题,请告诉我。

    下面的命令适用于我。假设所有必需的jar(包括testngjar)都保存在lib中

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

    在浏览了各种帖子之后,这对我在
    IntelliJ Idea
    上的工作非常有效:

    java -cp "./lib/*;Path to your test.class"  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.
    
    /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\
    

    如果您使用的是Maven,您可以很容易地从cmd行将其运行到testng.xml目录(或者您的任何名称,包含所有将运行的类的xml)中,并运行以下cmd:

    mvn clean test -DsuiteXmlFile=testng.xml 
    
    本页对此进行了更详细的解释:


    我不知道这与您是否使用Maven有关系,因此我没有将它包括在搜索词中,我想我会在这里提及它,以防其他人与我处于相同的情况。

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

    单击高亮显示的零件展开并显示完整的类路径

    您需要删除以下文件夹中对JAR的引用:JetBrains\IntelliJ IDEA Community Edition 2019.1.3


    java-cp“path\u copied”org.testng.testng testng.xml

    我尝试了这篇文章中的所有内容,但结果发现我缺少一个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
    
    
    com.google.inject
    圭斯
    4.1.0
    线程“main”java.lang.NoClassDefFoundError中出现异常:com/google/inject/Stage
    位于org.testng.internal.Configuration.(Configuration.java:33)
    位于org.testng.testng.init(testng.java:216)
    位于org.testng.testng.(testng.java:200)
    位于org.testng.testng.privateMain(testng.java:1312)
    在或
    
    mvn clean test -DsuiteXmlFile=testng.xml 
    
    <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
    
    java -cp bin\;jars\* org.testng.TestNG testng.xml
    
    Make sure not to use bin\* instead of bin\ as it will lead you to errors.
    
    Project
        |_ _ bin
          | _ _ your compiled classes
        |_ _ jars
          |_ _ testng.jar
          |_ _ jcommander.jar
          |_ _ bsh.jar
        |_ _ testng.xml