Belirli bir sınıftaki tüm testleri çalıştırabileceğinizi biliyorum:
mvn test -Dtest=classname
Ama bireysel bir yöntem çalıştırmak istiyorum ve -Dtest = classname.methodname çalışmıyor gibi görünüyor.
Belirli bir sınıftaki tüm testleri çalıştırabileceğinizi biliyorum:
mvn test -Dtest=classname
Ama bireysel bir yöntem çalıştırmak istiyorum ve -Dtest = classname.methodname çalışmıyor gibi görünüyor.
Yanıtlar:
Maven'de tek bir test yöntemi çalıştırmak için, komutu şu şekilde sağlamanız gerekir:
mvn test -Dtest=TestCircle#xyz test
TestCircle
test sınıfı adı nerede vexyz
test yöntemidir.
Joker karakterler de çalışır; hem yöntem adında hem de sınıf adında.
Çok modüllü bir projede test yapıyorsanız, testin yapıldığı modülü belirtin -pl <module-name>
.
Entegrasyon testleri için aşağıdaki it.test=...
seçeneği kullanın test=...
:
mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test
-pl <module-name>
.
-DfailIfNoTests=false
Test olmadan projeleri atlamak için kullanın . No Tests Were Executed
kök projeden test çalıştırmaya çalıştığınızda ve hiç test yapılmayan modüller olduğunda gerçekleşir.
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
"-DTest" in UPPER CASE 'T' ile başladığını unutmayın.
Güzel ateş ile ilgili bir sorun var 2.12. Bu benim maven-surefire-eklentisini 2.12'den 2.11'e değiştirmeme ne oldu:
mvn test -Dtest=DesignRulesTest
Sonuç:
[HATA] org.apache.maven.plugins hedefi yürütülemedi: maven-surefire-plugin: 2.12 : pmd projesinde test (varsayılan test): Test yapılmadı !
mvn test -Dtest=DesignRulesTest
Sonuç: [BİLGİ] --- maven-surefire-eklentisi: 2.11 : test (varsayılan test) @ pmd --- ... Çalışıyor net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest Testler çalışıyor: 5 , Hatalar: 0, Hatalar: 0, Atlandı: 4, Geçen süre: 4.009 sn
@Category(IntegrationTest.class)
, kullanın -Dit.test=ClassName
, aksi takdirde No tests were executed!
en son eklenti sürümleriyle bile elde edersiniz .
TestNG ile ne yaptığım (üzgünüm, JUnit bunu desteklemiyor) test senaryoları Çalıştırmak istediğim teste bir grup atayabilirim
@Test(groups="broken")
Ve sonra sadece 'mvn -Dgroups = broken' komutunu çalıştırın.
Tek bir Test Sınıfında bir dizi yöntemi çalıştırma 2.7.3 sürümü ile, tek bir Test Sınıfında yalnızca n testi çalıştırabilirsiniz.
NOT: junit 4.x ve TestNG için desteklenir.
Aşağıdaki sözdizimini kullanmalısınız
mvn -Dtest=TestCircle#mytest test
Desenleri de kullanabilirsiniz
mvn -Dtest=TestCircle#test* test
Surefire 2.12.1'den itibaren, birden çok yöntem seçebilirsiniz (JUnit4X sadece şu anda yamalar hoş geldiniz)
mvn -Dtest=TestCircle#testOne+testTwo test
Tek testlerle ilgili bu bağlantıyı kontrol edin
Aşağıdaki sözdizimini kullanarak belirli test sınıflarını ve yöntemlerini çalıştırabilirsiniz:
tam paket: mvn testi -Dtest = "com.oracle.tests. **"
bir sınıftaki tüm yöntemler: mvn test -Dtest = CLASS_NAME1
tek sınıftan tek yöntem: mvn testi -Dtest = CLASS_NAME1 # METHOD_NAME1
birden çok sınıftan çoklu yöntem: mvn testi -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2
Bu komut çalışıyor !!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
"-DTest" in UPPER CASE 'T' ile başladığını unutmayın.
Test tobrien bahsettiği parametre bir kullanarak bir yöntemi belirlemenizi sağlar # yöntemi adından önce. Bu JUnit ve TestNG için çalışmalıdır. Hiç denemedim, sadece Surefire Eklentisi sayfasında okuyun :
İnclude / excludes parametrelerini geçersiz kılarak tek tek testleri dosya adına göre çalıştırmak için bu parametreyi belirtin. Burada belirttiğiniz her bir model ** / $ {test} .java gibi biçimlendirilmiş bir içerme kalıbı oluşturmak için kullanılır, böylece "foo / MyTest.java" adlı tek bir testi çalıştırmak için sadece "-Dtest = MyTest" yazabilirsiniz. Bu parametre, include / excludes parametrelerini ve TestNG suiteXmlFiles parametresini geçersiz kılar. 2.7.3'ten beri #myMethod veya # my * ethod ekleyerek testte sınırlı sayıda yöntem yürütebilirsiniz. Si türü "-Dtest = MyTest # myMethod" junit 4.x ve testNg için desteklenir
JUnit'in yeni sürümleri Kategoriler koşucusunu içerir: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
Ancak JUnit'in serbest bırakma prosedürü maven tabanlı değildir, bu nedenle maven kullanıcıları bunu havuzlarına manuel olarak koymak zorundadır.
Surefire eklentisi sürüm 2.22.1'den (muhtemelen daha önce) testng.xml kullanırken testnames özelliğini kullanarak tek bir test çalıştırabilirsiniz
Aşağıdaki testng.xml verildi
<?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>
pom.xml ile
<?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>
Komut satırından
mvn clean test -DselectedTests=run-B-test
Daha fazla okuma - Testng kullanarak Maven güzelliğinde eklentisi
Tek bir test sınıfı çalıştırabilirsiniz, ancak bir test sınıfı içinde tek bir yöntem çalıştıramazsınız. Sınıfın tam adını değil, sınıfın basit adını kullanırsınız. Yani, "org.sonatype.test.MyTest" içinde bir testiniz varsa ve çalıştırmak istediğiniz tek test buysa, komut satırınız şöyle görünür:
mvn test -Dtest=MyTest
Bildiğim kadarıyla , surefire eklentisi bunu yapmanın bir yolunu sunmuyor. Ancak bir sorun açmaktan çekinmeyin :)
mvn test -Dtest=classname
sözdizimini kullanabilirsiniz .