Saya tahu Anda dapat menjalankan semua tes di kelas tertentu menggunakan:
mvn test -Dtest=classname
Tapi saya ingin menjalankan metode individual dan -Dtest = classname.methodname tampaknya tidak berfungsi.
Saya tahu Anda dapat menjalankan semua tes di kelas tertentu menggunakan:
mvn test -Dtest=classname
Tapi saya ingin menjalankan metode individual dan -Dtest = classname.methodname tampaknya tidak berfungsi.
Jawaban:
Untuk menjalankan metode uji tunggal di Maven, Anda perlu memberikan perintah sebagai:
mvn test -Dtest=TestCircle#xyz test
dimana TestCircle
nama kelas tes danxyz
metode tes.
Karakter wild card juga berfungsi; baik dalam nama metode dan nama kelas.
Jika Anda menguji dalam proyek multi-modul, tentukan modul yang digunakan untuk menguji -pl <module-name>
.
Untuk tes integrasi gunakan it.test=...
opsi alih-alih test=...
:
mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test
-pl <module-name>
.
-DfailIfNoTests=false
untuk melewati proyek tanpa tes. No Tests Were Executed
terjadi ketika Anda mencoba menjalankan tes dari proyek root dan ada modul tanpa tes sama sekali.
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Perhatikan bahwa "-DTest" dimulai dengan KASUS UPPER 'T'.
Ada masalah dengan pasti 2.12. Inilah yang terjadi pada saya mengubah maven-surefire-plugin dari 2.12 menjadi 2.11:
mvn test -Dtest=DesignRulesTest
Hasil:
[KESALAHAN] Gagal menjalankan tujuan org.apache.maven.plugins: maven-surefire-plugin: 2.12 : tes (uji default) pada proyek pmd: Tidak ada tes yang dijalankan!
mvn test -Dtest=DesignRulesTest
Hasil: [INFO] --- maven-surefire-plugin: 2.11 : test (default-test) @ pmd --- ... Menjalankan net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest Tes dijalankan: 5 , Kegagalan: 0, Kesalahan: 0, Dilewati: 4, Waktu berlalu: 4,009 dtk
@Category(IntegrationTest.class)
, gunakan -Dit.test=ClassName
, jika tidak, Anda akan mendapatkan No tests were executed!
versi plugin terbaru.
Apa yang saya lakukan dengan TestNG saya, (maaf, JUnit tidak mendukung ini) kasus uji adalah saya dapat menetapkan grup untuk tes yang ingin saya jalankan
@Test(groups="broken")
Dan kemudian jalankan 'mvn -Dgroups = broken'.
Menjalankan serangkaian metode dalam Kelas Tes Tunggal Dengan versi 2.7.3, Anda hanya dapat menjalankan n tes dalam Kelas Tes tunggal.
CATATAN: ini didukung untuk junit 4.x dan TestNG.
Anda harus menggunakan sintaks berikut
mvn -Dtest=TestCircle#mytest test
Anda juga bisa menggunakan pola
mvn -Dtest=TestCircle#test* test
Pada ayal 2.12.1, Anda dapat memilih beberapa metode (hanya JUnit4X saat ini, patch diterima)
mvn -Dtest=TestCircle#testOne+testTwo test
Periksa tautan ini tentang tes tunggal
Anda dapat menjalankan kelas dan metode pengujian khusus menggunakan sintaks berikut:
paket lengkap: mvn test -Dtest = "com.oracle.tests. **"
semua metode di kelas: mvn test -Dtest = CLASS_NAME1
metode tunggal dari kelas tunggal: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1
beberapa metode dari beberapa kelas: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2
Perintah ini berhasil !!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Perhatikan bahwa "-DTest" dimulai dengan KASUS UPPER 'T'.
The uji parameter yang disebutkan oleh tobrien memungkinkan Anda untuk menentukan metode menggunakan # sebelum nama metode. Ini harus bekerja untuk JUnit dan TestNG. Saya belum pernah mencobanya, cukup baca di halaman Plugin Surefire :
Tentukan parameter ini untuk menjalankan tes individual dengan nama file, menimpa parameter include / exclude. Setiap pola yang Anda tentukan di sini akan digunakan untuk membuat pola menyertakan diformat seperti ** / $ {test} .java, jadi Anda cukup mengetik "-Dtest = MyTest" untuk menjalankan tes tunggal yang disebut "foo / MyTest.java". Parameter ini mengabaikan parameter include / exclude, dan parameter TestNG suiteXmlFiles. sejak 2.7.3 Anda dapat menjalankan sejumlah metode dalam pengujian dengan menambahkan #myMethod atau # my * ethod. Si tipe "-Dtest = MyTest # myMethod" didukung untuk junit 4.x dan testNg
Versi baru JUnit berisi pelari Kategori: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
Tetapi prosedur melepaskan JUnit tidak berbasis maven, jadi pengguna maven harus memasukkannya secara manual ke repositori mereka.
Pada plugin plugin surefire versi 2.22.1 (mungkin lebih awal) Anda dapat menjalankan tes tunggal menggunakan properti testnames saat menggunakan testng.xml
Diberikan testng.xml berikut
<?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>
dengan 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>
Dari baris perintah
mvn clean test -DselectedTests=run-B-test
Bacaan lebih lanjut - Maven plugin pasti menggunakan testng
Anda dapat menjalankan kelas uji tunggal, tetapi bukan metode tunggal dalam kelas uji. Anda menggunakan nama kelas yang sederhana bukan nama kelas yang sepenuhnya memenuhi syarat. Jadi, jika Anda memiliki tes di "org.sonatype.test.MyTest" dan itu adalah satu-satunya tes yang ingin Anda jalankan, baris perintah Anda akan terlihat seperti ini:
mvn test -Dtest=MyTest
Sepengetahuan saya, plugin jitu tidak memberikan cara untuk melakukan ini. Tapi jangan ragu untuk membuka masalah :)
mvn test -Dtest=classname
sintaksisnya.