私はあなたが特定のクラスですべてのテストを実行できることを知っています:
mvn test -Dtest=classname
しかし、個別のメソッドを実行したいのですが、-Dtest = classname.methodnameが機能しないようです。
私はあなたが特定のクラスですべてのテストを実行できることを知っています:
mvn test -Dtest=classname
しかし、個別のメソッドを実行したいのですが、-Dtest = classname.methodnameが機能しないようです。
回答:
Mavenで単一のテストメソッドを実行するには、次のようにコマンドを指定する必要があります。
mvn test -Dtest=TestCircle#xyz test
どこがTestCircle
テストクラス名であり、xyz
試験方法です。
ワイルドカード文字も機能します。メソッド名とクラス名の両方で。
マルチモジュールプロジェクトでテストする場合は、テストで使用するモジュールを指定します-pl <module-name>
。
統合テストではit.test=...
、test=...
次の代わりにオプションを使用します。
mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test
-pl <module-name>
。
-DfailIfNoTests=false
テストなしでプロジェクトをスキップするために使用します。No Tests Were Executed
ルートプロジェクトからテストを実行しようとしたときに、テストのないモジュールがまったく存在しない場合に発生します。
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
「-DTest」は大文字の「T」で始まることに注意してください。
surefire 2.12に問題があります。これが、maven-surefire-pluginを2.12から2.11に変更した場合に起こります。
mvn test -Dtest=DesignRulesTest
結果:
[エラー]ゴールorg.apache.maven.plugins:maven-surefire-plugin:2.12:test(default-test)をプロジェクトpmdで実行できませんでした:テストは実行されませんでした!
mvn test -Dtest=DesignRulesTest
結果:[INFO] --- maven-surefire-plugin:2.11:test(default-test)@ pmd --- ... Running net.sourceforge.pmd.lang.java.rule.design.DesignRulesTestテストの実行:5 、失敗:0、エラー:0、スキップ:4、経過時間:4.009秒
@Category(IntegrationTest.class)
します-Dit.test=ClassName
。それ以外の場合はNo tests were executed!
、最新のプラグインバージョンでも取得できます。
TestNG(申し訳ありませんが、JUnitはこれをサポートしていません)のテストケースでは、実行するテストにグループを割り当てることができます。
@Test(groups="broken")
そして、単に 'mvn -Dgroups = broken'を実行します。
単一のテストクラスでの一連のメソッドの実行バージョン2.7.3では、単一のテストクラスで実行できるテストはn個のみです。
注:junit 4.xおよびTestNGでサポートされています。
次の構文を使用する必要があります
mvn -Dtest=TestCircle#mytest test
パターンも使えます
mvn -Dtest=TestCircle#test* test
surefire 2.12.1以降、複数の方法を選択できます(現時点ではJUnit4Xのみ、パッチは歓迎します)
mvn -Dtest=TestCircle#testOne+testTwo test
単一のテストについては、このリンクを確認してください
次の構文を使用して、特定のテストクラスとメソッドを実行できます。
完全なパッケージ:mvn test -Dtest = "com.oracle.tests。**"
クラス内のすべてのメソッド:mvn test -Dtest = CLASS_NAME1
単一クラスの単一メソッド:mvn test -Dtest = CLASS_NAME1#METHOD_NAME1
複数のクラスからの複数のメソッド:mvn test -Dtest = CLASS_NAME1#METHOD_NAME1、CLASS_NAME2#METHOD_NAME2
このコマンドは機能します!!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
「-DTest」は大文字の「T」で始まることに注意してください。
テスト tobrienで言及したパラメータは、使用してメソッドを指定することができます#のメソッド名の前に。これはJUnitとTestNGで機能するはずです。私は試したことがないので、Surefireプラグインのページで読んでください。
このパラメーターを指定して、ファイル名で個々のテストを実行し、includes / excludesパラメーターをオーバーライドします。ここで指定する各パターンは、** / $ {test} .javaのようなフォーマットのインクルードパターンを作成するために使用されるため、「-Dtest = MyTest」と入力するだけで、「foo / MyTest.java」という単一のテストを実行できます。このパラメーターは、includes / excludesパラメーター、およびTestNG suiteXmlFilesパラメーターをオーバーライドします。2.7.3以降#myMethodまたは#my * ethodを追加して、テストで限られた数のメソッドを実行できます。Siタイプ "-Dtest = MyTest#myMethod"がjunit 4.xおよびtestNgでサポートされています
JUnitの新しいバージョンには、カテゴリーランナーが含まれています。http: //kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
ただし、JUnitのリリース手順はMavenベースではないため、Mavenユーザーはそれを手動でリポジトリに配置する必要があります。
surefireプラグインバージョン2.22.1(おそらく以前)では、testng.xmlを使用するときにtestnamesプロパティを使用して単一のテストを実行できます。
次の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>
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>
コマンドラインから
mvn clean test -DselectedTests=run-B-test
さらに読書- Mavenの確実なTestNGのを使用してプラグイン
私の知る限りでは、surefireプラグインはこれを行う方法を提供していません。しかし、問題をオープンしてお気軽に:)
mvn test -Dtest=classname
構文を使用できます。