Wiem, że możesz uruchomić wszystkie testy w określonej klasie, używając:
mvn test -Dtest=classname
Ale chcę uruchomić indywidualną metodę i -Dtest = nazwa_klasy. Nazwa_metody wydaje się nie działać.
Wiem, że możesz uruchomić wszystkie testy w określonej klasie, używając:
mvn test -Dtest=classname
Ale chcę uruchomić indywidualną metodę i -Dtest = nazwa_klasy. Nazwa_metody wydaje się nie działać.
Odpowiedzi:
Aby uruchomić pojedynczą metodę testową w Maven, musisz podać komendę jako:
mvn test -Dtest=TestCircle#xyz test
gdzie TestCircle
jest nazwą klasy testowej i xyz
jest metodą testową.
Dzikie znaki również działają; zarówno w nazwie metody, jak i nazwie klasy.
Jeśli testujesz w projekcie wielomodułowym, określ moduł, w którym test się znajduje -pl <module-name>
.
Do testów integracyjnych użyj it.test=...
opcji zamiast test=...
:
mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test
-pl <module-name>
.
-DfailIfNoTests=false
do pomijania projektów bez testu. No Tests Were Executed
zdarza się, gdy próbujesz uruchomić test z projektu root i są moduły bez testów w ogóle.
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Zauważ, że „-DTest” zaczyna się od GÓRNEJ OBUDOWY „T”.
Wystąpił problem z surefire 2.12. Oto co się ze mną zmieniło, zmieniając wtyczkę maven-surefire z 2.12 na 2.11:
mvn test -Dtest=DesignRulesTest
Wynik:
[BŁĄD] Nie udało się wykonać celu org.apache.maven.plugins: maven-surefire-plugin: 2.12 : test (test domyślny) w projekcie pmd: Nie wykonano żadnych testów!
mvn test -Dtest=DesignRulesTest
Wynik: [INFO] --- maven-surefire-plugin: 2.11 : test (test domyślny) @ pmd --- ... Uruchamianie net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest Uruchomienie testów: 5 , Awarie: 0, Błędy: 0, Pominięte: 4, Upływ czasu: 4.009 sek
@Category(IntegrationTest.class)
, używaj -Dit.test=ClassName
, w przeciwnym razie otrzymasz No tests were executed!
nawet najnowsze wersje wtyczek.
To, co robię z moim TestNG (przepraszam, JUnit nie obsługuje tego), to przypadki, w których mogę przypisać grupę do testu, który chcę uruchomić
@Test(groups="broken")
A następnie po prostu uruchom „mvn -Dgroups = broken”.
Uruchamianie zestawu metod w jednej klasie testowej W wersji 2.7.3 można uruchomić tylko n testów w jednej klasie testowej.
UWAGA: jest obsługiwany przez junit 4.xi TestNG.
Musisz użyć następującej składni
mvn -Dtest=TestCircle#mytest test
Możesz także użyć wzorów
mvn -Dtest=TestCircle#test* test
Od surefire 2.12.1 możesz wybrać wiele metod (obecnie JUnit4X, łatki mile widziane)
mvn -Dtest=TestCircle#testOne+testTwo test
Sprawdź ten link na temat pojedynczych testów
Możesz uruchomić określone klasy testowe i metody, stosując następującą składnię:
pełny pakiet: test mvn -Dtest = "com.oracle.tests. **"
wszystkie metody w klasie: test mvn -Dtest = CLASS_NAME1
pojedyncza metoda z pojedynczej klasy: test mvn -Dtest = CLASS_NAME1 # METHOD_NAME1
metoda wielokrotna z wielu klas: test mvn -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2
To polecenie działa !!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Zauważ, że „-DTest” zaczyna się od GÓRNEJ OBUDOWY „T”.
Badanie parametrów wymienionych przez tobrien pozwala określić metodę używając # przed nazwą metody. To powinno działać dla JUnit i TestNG. Nigdy tego nie próbowałem, po prostu przeczytaj to na stronie wtyczki Surefire :
Określ ten parametr, aby uruchamiać pojedyncze testy według nazwy pliku, zastępując parametry włączeń / wykluczeń. Każdy określony tutaj wzorzec zostanie użyty do utworzenia wzorca dołączania sformatowanego jak ** / $ {test} .java, więc możesz po prostu wpisać „-Dtest = MyTest”, aby uruchomić pojedynczy test o nazwie „foo / MyTest.java”. Ten parametr zastępuje parametry włączania / wyłączania i parametr TestNG suiteXmlFiles. od wersji 2.7.3 Możesz wykonać ograniczoną liczbę metod w teście, dodając #myMethod lub # my * ethod. Typ Si „-Dtest = MyTest # myMethod” obsługiwany przez junit 4.xi testNg
Nowe wersje JUnit zawiera moduł uruchamiający kategorie: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
Ale procedura wydania JUnit nie jest oparta na maven, więc użytkownicy maven muszą ręcznie umieścić go w swoich repozytoriach.
Począwszy od wtyczki surefire w wersji 2.22.1 (być może wcześniejszej), można uruchomić pojedynczy test, używając właściwości testnames, używając testng.xml
Biorąc pod uwagę następujący 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>
z 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>
Z linii poleceń
mvn clean test -DselectedTests=run-B-test
Dalsza lektura - wtyczka Maven surefire za pomocą testng
Możesz uruchomić jedną klasę testową, ale nie jedną metodę w klasie testowej. Używasz prostej nazwy klasy, a nie pełnej nazwy klasy. Więc jeśli masz test w „org.sonatype.test.MyTest” i jest to jedyny test, który chcesz uruchomić, linia poleceń wyglądałaby następująco:
mvn test -Dtest=MyTest
Według mojej wiedzy wtyczka surefire nie zapewnia żadnego sposobu, aby to zrobić. Ale możesz otworzyć problem :)
mvn test -Dtest=classname
składni.