如何从命令行运行TestNG

问题描述:

我该如何从命令行运行.java TestNG项目?如何从命令行运行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。有谁知道如何得到这个工作?

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

尝试C:\projectfred> java -cp "path-tojar/testng.jar:path_to_yourtest_classes" org.testng.TestNG testng.xml

更新:

linux下我跑这个命令,这将是要么

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

目录结构在Windows类似的一些事情:

/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,loggers等。如果您不想指定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文件的完整路径

+0

感谢。你能举一个具体路径的例子吗?我试着像C:\ projectfred> java命令 “C:\路径tojar \ testng.jar:C:\ path_to_yourtest_classes” org.testng.TestNG的testng.xml,但你可以看到有很多的冒号在那,它会抛出一个错误。 – fuzzyanalysis 2012-08-12 22:07:06

+0

你可以给我你的测试类和相关库的层次结构吗? – Patton 2012-08-13 03:12:19

+0

(Windows 7计算机) 测试类:C:\用户\我\工作区\ MyProject的(这是所有我的TestNG的.java文件是)。 相关库:C:\ Program Files文件\ jbdevstudio4 \工作室\插件。 难道这就是你以后? – fuzzyanalysis 2012-08-14 23:34:47

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

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

使用“;”作为分隔符解决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 

非常感谢这是非常非常有帮助。我能使用命令行运行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案例。

确定后,试图弄清楚为什么我不能运行从

http://www.tutorialspoint.com/testng/testng_environment.htm的例子2天下面的代码并没有为我

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

的修复工作,因为这是如下: 我得出以下结论:首先安装eclipse,然后下载TestNG插件。之后,按照教程中的说明使用javac从cmd创建和编译测试类,然后添加testng.xml。要在Windows上运行的testng.xml 10 CMD运行以下行:

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\* 上面的路径表示您通过安装TestNG插件下载jcommander.jar和testng.jar的位置蚀。路径可能会有所不同,以确保只需打开eclipse的安装位置,进入插件并搜索jcommander.jar。然后复制该位置,然后添加*以选择所有必需的.jars。

C:\Test 

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

我希望我是有帮助的一些你们:)

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

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

包所有的测试和依赖类在同一个罐子,说tests.jar

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

公告结尾的“”,在适当的文件夹名或路径替换folder-with-classes/

像下面

<?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您的测试类创建testng.xml与内容。

运行测试

java -jar tests.jar testng.xml