次のようにして、特定のクラスですべてのテストを実行できることを私は知っています。
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
Surefire 2.12には問題があります。これが私に起こることですmaven-surefire-pluginを2.12から2.11に変更します:
mvn test -Dtest=DesignRulesTest
結果:
[エラー]プロジェクトpmdでゴールorg.Apache.maven.plugins:maven-surefire-plugin: 2.12 :test(default-test)を実行できませんでした: テストは実行されませんでした。
mvn test -Dtest=DesignRulesTest
結果:[情報] --- maven-surefire-plugin: 2.11 :test(デフォルトテスト)@ pmd --- ... net.sourceforge.pmd.lang.Java.rule.design.DesignRulesTestを実行していますテスト実行:5、失敗:0、エラー:0、スキップ:4、経過時間:4.009秒
私の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で言及されている test パラメータを使用すると、メソッド名の前に # を使用してメソッドを指定できます。これはJUnitとTestNGのために働くべきです。私はそれを試したことがない、ちょうど Surefireプラグインのページでそれを読む :
個々のテストをファイル名で実行するには、このパラメーターを指定して、includes/excludeパラメーターをオーバーライドします。ここで指定した各パターンは、**/$ {test} .Javaのような形式のインクルードパターンを作成するために使用されます。したがって、 " - Dtest = MyTest"と入力して "foo/MyTest.Java"という単一のテストを実行できます。このパラメーターは、includes/excludeパラメーター、およびTestNG suiteXmlFilesパラメーターをオーバーライドします。 2.7.3以降#myMethodまたは#my * ethodを追加することで、テストで限られた数のメソッドを実行できます。 junit 4.xとtestNgに対応したSiタイプ "-Dtest = MyTest#myMethod"
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
続きを読む - testngを使ったMaven surefireプラグイン