web-dev-qa-db-fra.com

Comment exécuter TestNG à partir de la ligne de commande

Comment exécuter exactement un projet .Java TestNG à partir d'une ligne de commande?

J'ai lu la documentation TestNG et essayé ce qui suit en vain:

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

... avec le fichier testng.xml suivant dans mon projet:

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

L'erreur que j'obtiens est la suivante:

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.

Évidemment, je ne référence pas correctement TestNG dans ma ligne de commande. Est-ce que quelqu'un sait comment faire fonctionner cela?

25
Fuzzy Analysis

Vous devez avoir le testng.jar sous classpath.

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

Mise à jour:

Sous Linux, j'ai exécuté cette commande et ce serait quelque chose de similaire sous Windows

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

Structure du répertoire:

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

Une fois que j'ai compilé toutes les sources, elles vont dans le répertoire bin. Donc, dans le chemin de classe, je dois spécifier le contenu du répertoire bin et toutes les bibliothèques comme testng.xml, les enregistreurs, etc. ici. Copiez également testng.xml dans le dossier bin si vous ne souhaitez pas spécifier le chemin d'accès complet où le testng.xml est disponible.

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

Update:

Allez dans le dossier MyProject et tapez exécutez la commande Java comme ci-dessous: -

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

Je crois que le fichier testng.xml est sous C:\Users\me\workspace\MyProject sinon, veuillez donner le chemin complet pour testng.xml fichier

22
Patton

Ok après 2 jours d'essayer de comprendre pourquoi je n'ai pas pu exécuter l'exemple à partir de

http://www.tutorialspoint.com/testng/testng_environment.htm le code suivant ne fonctionnait pas pour moi

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

Le correctif est le suivant: je suis arrivé à la conclusion suivante: installez d'abord Eclipse et téléchargez le plug-in TestNG. Ensuite, suivez les instructions du didacticiel pour créer et compiler la classe de test à partir de cmd à l'aide de javac, puis ajoutez le testng.xml. Pour exécuter le testng.xml sur Windows 10 cmd, exécutez la ligne suivante:

Java -cp C:\Users\Lenovo\Desktop\Eclipse\plugins\org.testng.Eclipse_6.9.12.201607091356\lib\*;C:\Test org.testng.TestNG testng.xml

clarifier: C:\Users\Lenovo\Desktop\Eclipse\plugins\org.testng.Eclipse_6.9.12.201607091356\lib\* Le chemin ci-dessus représente l'emplacement de jcommander.jar et testng.jar que vous avez téléchargés en installant le plugin TESTNG pour Eclipse. Le chemin peut varier, alors assurez-vous simplement d'ouvrir l'emplacement d'installation d'Eclipse, accédez aux plugins et recherchez jcommander.jar. Copiez ensuite cet emplacement et ajoutez ensuite * pour sélectionner tous les .jars nécessaires.

C:\Test  

Le chemin ci-dessus représente l'emplacement du testing.xml dans votre projet. Après avoir obtenu tous les chemins nécessaires, ajoutez-les en utilisant ";".

J'espère avoir été utile à certains d'entre vous :)

6
stewazy

Merci beaucoup, c'était vraiment très utile .. J'ai pu exécuter mes classes TestNG en utilisant la ligne de commande, mais je voudrais quand même récapituler les choses une dernière fois comme suit ..

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

cela devrait exécuter vos cas testNG.

5
Karthic.K

Préparer MANIFEST.MF fichier avec le contenu suivant

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

Emballez toutes les classes de test et de dépendance dans le même bocal, par exemple tests.jar

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

Remarquez le dernier ".", Remplacez folder-with-classes/ avec le nom de dossier ou le chemin approprié.

Créer testng.xml avec un contenu comme ci-dessous

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

Remplacer com.example.yourcompany.qa.Test1 avec le chemin d'accès à votre classe de test.

Exécutez vos tests

Java -jar tests.jar testng.xml
3
gumkins

L'utilisation de ";" comme délimiteur sur le problème Windows a été résolue.

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

ex:-

Java -cp ".\bin;..\common_lib\*;" org.testng.TestNG testng.xml
3
sudheer test

La commande ci-dessous fonctionne pour moi. Pourvu que tous les bocaux requis, y compris le bocal testng, soient conservés dans lib.

Java -cp "lib/*" org.testng.TestNG testng.xml
3
Satish A

J'avais rencontré le même problème car j'ai téléchargé le plugin TestNG depuis Eclipse. Voici ce que j'ai fait pour faire le travail:

  1. Après avoir ajouté TestNG à votre bibliothèque de projet, créez un dossier dans vos noms de projet en tant que lib (le nom peut être n'importe quoi):

  2. Accédez à l'emplacement "C:\Program Files\Eclipse\eclipse-Java-mars-R-win32-x86_64\Eclipse\plugins" et copiez com.beust.jcommander_1.72.0.jar et org.testng_6.14.2.r20180216145.jar fichier dans le dossier créé (lib).

Remarque: Les fichiers sont testng.jar et jcommander.jar

  1. Lancez maintenant CMD, accédez à votre répertoire de projet, puis tapez:
    Java -cp C:\Users\User123\TestNG\lib *; C:\Users\User123\TestNG\bin org.testng.TestNG testng.xml

C'est ça !
Faites-moi savoir si vous avez d'autres préoccupations.

2
cruisepandey

Si vous utilisez Maven, vous pouvez l'exécuter à partir de la ligne cmd très facilement, cd dans le répertoire avec le testng.xml (ou quel que soit le vôtre, le xml qui a toutes les classes qui s'exécuteront) et exécutez cette cmd:

mvn clean test -DsuiteXmlFile=testng.xml 

Cette page l'explique plus en détail: Comment exécuter testng.xml à partir de la ligne de commande Maven

Je ne savais pas que cela importait que vous utilisiez Maven ou non, donc je ne l'ai pas inclus dans mes termes de recherche, j'ai pensé le mentionner ici au cas où d'autres seraient dans la même situation que moi.

2

Après avoir parcouru les différents articles, cela a très bien fonctionné pour moi sur IntelliJ Idea:

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

Voici ma structure de répertoires:

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

Exécutez donc par cette commande:

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

Mon répertoire de projets Example1 est dans le chemin:

C:\Users\xyz\IdeaProjects\
1
Arya

Vous devrez utiliser un point-virgule comme délimiteur tout en spécifiant le fichier jar et le chemin du fichier de classe dans Windows. Cela a résolu le problème.
En supposant que le fichier de classe est sous C:.

Java -cp ".;C:\testng.jar" org.testng.TestNG testing.xml
1
Pratap

Si aucune des réponses ci-dessus ne fonctionne, vous pouvez exécuter le test dans IDE, obtenir le chemin d'accès aux classes et l'utiliser dans votre commande. Ex: Si vous utilisez Intellij IDEA, vous pouvez le trouver en haut de la console (capture d'écran ci-dessous). Intellij Console

Cliquer sur la partie en surbrillance se développe et affiche le chemin de classe complet.

vous devez supprimer les références aux fichiers jars dans le dossier: JetBrains\IntelliJ IDEA Community Edition 2019.1.3

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

0
Tilak