web-dev-qa-db-ja.com

Mavenを使って単一のテストメソッドを実行する

次のようにして、特定のクラスですべてのテストを実行できることを私は知っています。

mvn test -Dtest=classname

しかし、私は個々のメソッドを実行したいのですが、-Dtest = classname.methodnameは機能しないようです。

462
BillMan

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
619

Surefire 2.12には問題があります。これが私に起こることですmaven-surefire-pluginを2.12から2.11に変更します:

  1. mvn test -Dtest=DesignRulesTest

    結果:
    [エラー]プロジェクトpmdでゴールorg.Apache.maven.plugins:maven-surefire-plugin: 2.12 :test(default-test)を実行できませんでした: テストは実行されませんでした。

  2. 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秒

25
Duccio Fabbri

私のTestNGを使ってすること(申し訳ありませんが、JUnitはこれをサポートしていません)は、実行したいテストにグループを割り当てることができます。

@Test(groups="broken")

そして、単に 'mvn -Dgroups = broken'を実行してください。

16
tunaranch

単一のテストクラスで一連のメソッドを実行するバージョン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

これをチェックしてください 単一テストについてのリンク

14

次の構文を使用して、特定のテストクラスとメソッドを実行できます。

  1. フルパッケージ:mvn test -Dtest = "com.Oracle.tests。**"

  2. クラス内のすべてのメソッド:mvn test -Dtest = CLASS_NAME1

  3. 単一クラスからの単一メソッド:mvn test -Dtest = CLASS_NAME1#METHOD_NAME1

  4. 複数のクラスからの複数のメソッド:mvn test -Dtest = CLASS_NAME1#METHOD_NAME1、CLASS_NAME2#METHOD_NAME2

9

このコマンドは機能します。 mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test "-DTest"は大文字の 'T'で始まります。

6
vikas

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"

4
Wesley Hartford

JUnitの新しいバージョンには、カテゴリランナーが含まれています: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html

しかし、JUnitのリリース手順はMavenベースではないため、Mavenユーザーは自分のリポジトリに手動で配置する必要があります。

3

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プラグイン

2
bsk