632

次を使用して、特定のクラスのすべてのテストを実行できることを知っています。

mvn test -Dtest=classname

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

4

14 に答える 14

850

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
于 2011-05-13T06:53:59.270 に答える
31

surefire2.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

    結果:[INFO] --- maven-surefire-plugin:2.11:test(default-test)@ pmd --- ...実行中のnet.sourceforge.pmd.lang.java.rule.design.DesignRulesTestテストの実行:5 、失敗:0、エラー:0、スキップ:4、経過時間:4.009秒

于 2012-10-14T22:10:14.200 に答える
18

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

@Test(groups="broken")

そして、単に'mvn -Dgroups=broken'を実行します。

于 2009-12-09T23:13:54.970 に答える
15

単一のテストクラスでの一連のメソッドの実行バージョン2.7.3では、単一のテストクラスで実行できるテストはn個のみです。

注:junit4.xおよびTestNGでサポートされています。

次の構文を使用する必要があります

mvn -Dtest=TestCircle#mytest test

あなたもパターンを使うことができます

mvn -Dtest=TestCircle#test* test

surefire 2.12.1以降、複数のメソッドを選択できます(現時点では、JUnit4Xのみ、パッチを歓迎します)

mvn -Dtest=TestCircle#testOne+testTwo test

単一のテストについては、このリンクを確認してください

于 2013-02-28T14:22:33.163 に答える
12

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

  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

于 2018-07-02T03:10:08.327 に答える
11

このコマンドは機能します!! mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test「-DTest」は大文字の「T」で始まることに注意してください。

于 2017-08-07T11:14:13.937 に答える
9

テストクラスから単一のテストメソッドを実行します。

mvn test -Dtest=Test1#methodname


その他の関連するユースケース

  • mvn test // Run all the unit test classes

  • mvn test -Dtest=Test1 // Run a single test class

  • mvn test -Dtest=Test1,Test2 // Run multiple test classes

  • mvn test -Dtest=Test1#testFoo* // Run all test methods that match pattern 'testFoo*' from a test class.

  • mvn test -Dtest=Test1#testFoo*+testBar* // Run all test methods match pattern 'testFoo*' and 'testBar*' from a test class.

于 2020-07-20T16:12:34.630 に答える
5

このスレッドで提供されているいくつかのソリューションを試しましたが、別のモジュールに依存するモジュールでは機能しませんでした。その場合mvn、追加のパラメーターを使用してルートモジュールから実行する必要がありました:( -am--also-makeこれは、テストモジュールが依存するビルドモジュールにmavenに指示し-DfailIfNoTests=false、そうでない場合は「テストは実行されませんでした!」エラーが表示されます。

mvn test -pl B -Dtest=MyTestClass#myTest -am -DfailIfNoTests=false

ルートのpom.xmlセクション:

<modules>
    <module>A</module>
    <module>B</module>
<modules>

BはAに依存します。

于 2020-07-17T12:54:37.963 に答える
4

tobrienが言及しているテストパラメータを使用すると、メソッド名の前に#を使用してメソッドを指定できます。これは、JUnitとTestNGで機能するはずです。私はそれを試したことがありません。Surefireプラグインのページで読んでください。

このパラメーターを指定して、ファイル名で個々のテストを実行し、includes/excludesパラメーターをオーバーライドします。ここで指定する各パターンは、** / $ {test} .javaのような形式のインクルードパターンを作成するために使用されるため、「-Dtest = MyTest」と入力するだけで、「foo/MyTest.java」という単一のテストを実行できます。このパラメーターは、includes/excludesパラメーターおよびTestNGsuiteXmlFilesパラメーターをオーバーライドします。2.7.3以降#myMethodまたは#my * ethodを追加すると、テストで限られた数のメソッドを実行できます。Siタイプ「-Dtest=MyTest#myMethod」はjunit4.xおよびtestNgでサポートされています

于 2011-04-13T17:27:22.793 に答える
3

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

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

于 2009-12-10T14:10:01.933 に答える
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を使用したMavensurefireプラグイン

于 2018-11-08T01:45:48.880 に答える
3

まず、Mavenプロジェクトをクリーンアップする必要があります

mvn clean

次に、を使用して特定のファイルと関数を実行できます

mvn test -Dtest=testClassName#testCaseName

于 2021-11-23T18:59:11.580 に答える
1

実行するJUnitテストクラスとそのメソッドを指定する必要があります。

mvn test -Dtest=com.mycompany.AppTest#testMethod

https://metamug.com/article/java/build-run-java-maven-project-command-line.html#running-unit-tests

于 2021-10-23T10:21:34.990 に答える
-4

単一のテストクラスを実行できますが、テストクラス内の単一のメソッドを実行することはできません。クラスの完全修飾名ではなく、クラスの単純な名前を使用します。したがって、「org.sonatype.test.MyTest」にテストがあり、それが実行する唯一のテストである場合、コマンドラインは次のようになります。

mvn test -Dtest=MyTest
于 2009-12-09T15:36:09.197 に答える