Java 如何从命令行运行TestNG
如何从命令行运行.java TestNG项目 我已经阅读了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">
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插件。以下是我为完成工作所做的:
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