So che puoi eseguire tutti i test in una determinata classe usando:
mvn test -Dtest=classname
Ma voglio eseguire un metodo individuale e -Dtest = classname.methodname non sembra funzionare.
So che puoi eseguire tutti i test in una determinata classe usando:
mvn test -Dtest=classname
Ma voglio eseguire un metodo individuale e -Dtest = classname.methodname non sembra funzionare.
Risposte:
Per eseguire un singolo metodo di prova in Maven, è necessario fornire il comando come:
mvn test -Dtest=TestCircle#xyz test
dove TestCircle
è il nome della classe di test ed xyz
è il metodo di test.
Anche i caratteri jolly funzionano; sia nel nome del metodo che nel nome della classe.
Se stai testando in un progetto multi-modulo, specifica il modulo con cui si trova il test -pl <module-name>
.
Per i test di integrazione utilizzare l' it.test=...
opzione anziché test=...
:
mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test
-pl <module-name>
.
-DfailIfNoTests=false
per saltare i progetti senza test. No Tests Were Executed
accade quando si tenta di eseguire il test dal progetto principale e sono presenti moduli senza test.
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Si noti che "-DTest" inizia con MAIUSCOLO 'T'.
Si è verificato un problema con surefire 2.12. Questo è ciò che mi accade cambiando maven-surefire-plugin da 2.12 a 2.11:
mvn test -Dtest=DesignRulesTest
Risultato:
[ERRORE] Impossibile eseguire l'obiettivo org.apache.maven.plugins: maven-surefire-plugin: 2.12 : test (default-test) sul progetto pmd: Nessun test eseguito!
mvn test -Dtest=DesignRulesTest
Risultato: [INFO] --- maven-surefire-plugin: 2.11 : test (default-test) @ pmd --- ... In esecuzione net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest dei test eseguiti: 5 , Errori: 0, Errori: 0, Ignorato: 4, Tempo trascorso: 4,009 sec
@Category(IntegrationTest.class)
, usa -Dit.test=ClassName
, altrimenti otterrai No tests were executed!
anche con le ultime versioni dei plugin.
Quello che faccio con il mio TestNG, (scusate, JUnit non supporta questo) casi di test è che posso assegnare un gruppo al test che voglio eseguire
@Test(groups="broken")
E quindi esegui semplicemente "mvn -Dgroups = broken".
Esecuzione di una serie di metodi in una singola classe di test Con la versione 2.7.3, è possibile eseguire solo n test in una singola classe di test.
NOTA: è supportato per junit 4.xe TestNG.
È necessario utilizzare la sintassi seguente
mvn -Dtest=TestCircle#mytest test
Puoi anche usare modelli
mvn -Dtest=TestCircle#test* test
A partire da surefire 2.12.1, è possibile selezionare più metodi (solo JUnit4X in questo momento, patch benvenute)
mvn -Dtest=TestCircle#testOne+testTwo test
Controlla questo link per i singoli test
È possibile eseguire classi di test e metodi specifici utilizzando la sintassi seguente:
pacchetto completo: mvn test -Dtest = "com.oracle.tests. **"
tutti i metodi in una classe: mvn test -Dtest = CLASS_NAME1
metodo singolo dalla singola classe: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1
metodo multiplo da più classi: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2
Questo comando funziona !!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Si noti che "-DTest" inizia con MAIUSCOLO 'T'.
Il parametro di test menzionato da tobrien consente di specificare un metodo utilizzando un # prima del nome del metodo. Questo dovrebbe funzionare per JUnit e TestNG. Non l'ho mai provato, basta leggerlo sulla pagina Plugin Surefire :
Specificare questo parametro per eseguire singoli test in base al nome del file, sovrascrivendo i parametri include / exclude. Ogni modello qui specificato verrà utilizzato per creare un modello di inclusione formattato come ** / $ {test} .java, quindi puoi semplicemente digitare "-Dtest = MyTest" per eseguire un singolo test chiamato "foo / MyTest.java". Questo parametro sovrascrive i parametri include / exclude e il parametro TestNG suiteXmlFiles. da 2.7.3 È possibile eseguire un numero limitato di metodi nel test aggiungendo #myMethod o # my * ethod. Si tipo "-Dtest = MyTest # myMethod" supportato per junit 4.xe testNg
Le nuove versioni di JUnit contengono il corridore Categorie: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
Ma la procedura di rilascio di JUnit non è basata su Maven, quindi gli utenti Maven devono inserirla manualmente nei loro repository.
A partire dalla versione 2.22.1 del plugin surefire (possibilmente precedente) è possibile eseguire test singoli usando la proprietà testnames quando si usa testng.xml
Dato un seguente testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="all-tests">
<classes>
<class name="server.Atest"/>
<class name="server.Btest"/>
<class name="server.Ctest"/>
</classes>
</test>
<test name="run-A-test">
<classes>
<class name="server.Atest"/>
</classes>
</test>
<test name="run-B-test">
<classes>
<class name="server.Btest"/>
</classes>
</test>
<test name="run-C-test">
<classes>
<class name="server.Ctest"/>
</classes>
</test>
</suite>
con il pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
[...]
<properties>
<selectedTests>all-tests</selectedTests>
</properties>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<suiteXmlFiles>
<file>src/test/resources/testng.xml</file>
</suiteXmlFiles>
<properties>
<property>
<name>testnames</name>
<value>${selectedTests}</value>
</property>
</properties>
</configuration>
</plugin>
</plugins>
[...]
</project>
Dalla riga di comando
mvn clean test -DselectedTests=run-B-test
Ulteriori letture - Plugin Maven surefire usando testng
È possibile eseguire una singola classe di test, ma non un singolo metodo all'interno di una classe di test. Si utilizza il nome semplice della classe e non il nome completo della classe. Quindi, se hai un test in "org.sonatype.test.MyTest" e questo è l'unico test che vuoi eseguire, la tua riga di comando sarebbe simile a questa:
mvn test -Dtest=MyTest
Per quanto ne so , il plugin surefire non fornisce alcun modo per farlo. Ma sentiti libero di aprire un problema :)
mvn test -Dtest=classname
sintassi.