0

thisおよびthisのような他のいくつかの SO の質問を見てきました。しかし、これらの質問はかなり時代遅れであり、新しい解決策があるかどうか興味があります.

私のセットアップは次のようになります。

カテゴリ インターフェイス:

public interface FastTest{}

カテゴリ スイート:

@RunWith(Categories.class)
@IncludeCategory(FastTest.class)
public class FastSuite{}

サンプル テスト:

@Category(FastTest.class)
public class FastTests{

    @Test public void assertOneFastTest(){}

    @Test public void assertTwoFastTest(){}
}

FastTestMaven を使用して、すべてのテストのみを実行したいとします。理想的には、コマンドを使用します

mvn test -Dtest.category=FastTest

また

mvn test -Dtest.suite=FastSuite

しかし、私はこれを機能させることができませんでした。ClasspathSuiteの使用以外に何か提案はありますか? ありがとう。

4

2 に答える 2

2

グループの構成を使用して、surefire プラグインからこれを行うことができますが、junit47 プロバイダーも指定する必要があります。以下は私にとってはうまくいきます:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.11</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>2.11</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <id>default-test</id>
            <phase>test</phase>
            <goals>
                <goal>test</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <groups>com.xxx.foo.CategoryClass</groups>
    </configuration>
</plugin>

これはかなり最近導入されたと思うので、2.11 より前のプラグインの以前のバージョンでは機能しない可能性があります。プロバイダーを指定する必要があります。指定しないと機能しません。グループは、Category クラスの完全修飾名である必要があります。必要に応じて、excludeGroups も指定できます。

詳細については、Maven Surefire プラグインの Surefire:testを参照してください。

于 2011-12-07T22:31:44.527 に答える