2012-08-10 158 views
15

¿Cómo exactamente ejecuto un proyecto .java TestNG desde una línea de comando?Cómo ejecutar TestNG desde la línea de comando

He leído a través de la documentación de TestNG, y trató lo siguiente en vano:

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

... con el siguiente archivo testng.xml en mi proyecto:

<!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> 

El error Me sale es esto:

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. 

Obviamente, no estoy haciendo referencia a TestNG correctamente en mi línea de comandos. ¿Alguien sabe cómo hacerlo funcionar?

Respuesta

12

Necesita tener el testng.jar en classpath.

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

Actualización:

bajo Linux que corrió este comando y sería algo parecido en Windows, ya sea

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

estructura de directorios:

/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. 

vez Recopilo todas las fuentes que van en el directorio bin . Entonces, en classpath necesito especificar los contenidos del directorio bin y todas las librerías como testng.xml, loggers, etc. aquí. Copie también la carpeta testng.xml a bin si no desea especificar la ruta completa donde testng.xml está disponible.

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

Update:

Ir a la carpeta MyProject y tipo ejecute el comando java como la forma mostrada a continuación: -

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

creo que el archivo se encuentra bajo testng.xml C:\Users\me\workspace\MyProject si no, indique la ruta completa del archivo testng.xml

+0

Gracias. ¿Puedes dar un ejemplo con rutas exactas? He intentado algo como C: \ projectfred> java -cp "C: \ path-tojar \ testng.jar: C: \ path_to_yourtest_classes" org.testng.TestNG testng.xml, pero como pueden ver, hay muchos dos puntos en eso y arroja un error. – fuzzyanalysis

+0

¿me puede dar la jerarquía donde están disponibles sus clases de prueba y libs relacionados? – Patton

+0

(máquina con Windows 7) Clases de prueba: C: \ Users \ me \ workspace \ MyProject (aquí es donde están todos mis archivos TestNG .java). Libs relacionados: C: \ Archivos de programa \ jbdevstudio4 \ studio \ plugins. ¿Eso es lo que estabas buscando? – fuzzyanalysis

0

Deberá usar punto y coma como delimitador mientras especifica el archivo jar y la ruta del archivo de clase en Windows. Esto resolvió el problema.
Suponiendo que el archivo de clase está bajo C :.

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

Usando ";" como separador en cuestión se resolvió ventanas.

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

por ejemplo: -

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

Muchas gracias era realmente muy útil .. yo era capaz de correr mis clases de TestNG utilizando la línea de comandos, pero aún así me gustaría recapitulación las cosas una última vez de la siguiente manera ..

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 

esto debería ejecutar sus casos de testNG.

3

Ok después de 2 días de tratar de averiguar por qué no podía correr el ejemplo de

http://www.tutorialspoint.com/testng/testng_environment.htm el siguiente código no funcionó para mí

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

La solución a que es el siguiente: Llegué a la siguiente conclusión: primero fuera de eclipse de instalación y descargue el complemento TestNG. Después de eso, siga las instrucciones del tutorial para crear y compilar la clase de prueba desde cmd usando javac, y agregue el testng.xml. Para ejecutar el testng.xml en las ventanas 10 cmd ejecutar la siguiente línea:

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

para aclarar: C:\Users\Lenovo\Desktop\eclipse\plugins\org.testng.eclipse_6.9.12.201607091356\lib\* La ruta anterior representa la ubicación de jcommander.jar y testng.jar que ha descargado mediante la instalación el plugin para TestNG eclipse. La ruta puede variar, así que asegúrese de abrir la ubicación de instalación de eclipse, vaya a los complementos y busque jcommander.jar. Luego copie esa ubicación y luego agregue * para seleccionar todos los .jar necesarios.

C:\Test 

La ruta anterior representa la ubicación del testing.xml en su proyecto. Después de obtener todas las rutas necesarias, añádalas usando ";".

Espero haber sido útil para algunos de ustedes :)

1

Preparar MANIFEST.MF archivo con el siguiente contenido

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

paquete de todas las clases de prueba y de dependencia en el mismo frasco, dicen tests.jar

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

Aviso posterior a ".", Reemplace folder-with-classes/ con el nombre o la ruta de la carpeta adecuada.

Crear testng.xml con el contenido, como a continuación

<?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> 

Reemplazar com.example.yourcompany.qa.Test1 con la ruta a su clase de prueba.

ejecutar las pruebas

java -jar tests.jar testng.xml 
Cuestiones relacionadas