web-dev-qa-db-ja.com

Mavenでテストの実行順序を制御するにはどうすればよいですか?

順番にテストを実行する必要があります。私はこれがどこにも適切に文書化されているのを見つけることができません。コマンドラインからこれを実行したいと思います。何かのようなもの

 mvn -Dtest=test1,test2,test3,test5 test

どうすればよいですか?

17

テストの実行順序を指定することはできません。

これを行うための回避策は、 runOrderパラメーター をアルファベット順に設定することです。

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <runOrder>alphabetical</runOrder>
    </configuration>
</plugin>

次に、期待される順序を取得するために、テストの名前を変更する必要があります。

ただし、依存テストを行うことはお勧めできません。単体テストは fIrst でなければなりません。

37
gontard

テストの順序が本当に必要な場合は、JUnitの代わりに testng を使用して、テスト間の依存関係を定義し、その特定の順序に基づいてテストを行うことができます。実際には、独立したパラダイムが機能しない時期があることを私は知っています。

5
khmarbaise

テスト順序 を指定できるMaven Surefire プラグインがあります。

テストは相互に依存しているため、テストを順番に実行する必要があるという偶然の機会に、私はそれを強くお勧めします。各テストは独立していて、単独で実行できる必要があります。また、各テストが独立している場合は、実行する順序は関係ありません。独立したテストがあるということは、テストチェーン全体を再実行しなくても、単一のテストを繰り返し実行できることも意味します。これは時間を大幅に節約できます。

4
Green

すべてのテストを実行するテストスイートを作成して実行することができます。

Junit 4の場合:-

@RunWith(Suite.class)
@Suite.SuiteClasses({Test1.class,
                     Test2.class,
                     Test3.class,
                     Test4.class,
                     Test5.class
})
public class TestSuite
{
}

これにより、正しい順序で実行されます。

4
Peter Jamieson

単体テストを特定の順序で実行する必要がある場合は、テストの設計が不適切であるか、アプリの設計が不適切である可能性があります。ユニットテストは互いに独立している必要があります。

1
Pacane