Тестовый набор Maven Surefire Junit

Я использую плагин Maven Surefire для запуска только определенного набора тестов. Например:

package suite;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

import suite.slow.EvenSlowerClassTest;
import suite.slow.SlowClassTest;

@RunWith(Suite.class)
@Suite.SuiteClasses({
    SlowClassTest.class,
    EvenSlowerClassTest.class
})
public class SlowSuite {

}

С помощью команды Maven

test -DrunSuite=**/FastSuite.class -DfailIfNoTests=false

Я могу запустить тестовые наборы FastSuite или SlowSuite явно, однако, как я могу запустить все имеющиеся у меня наборы тестов или все тесты, которые не включены в набор тестов?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <includes>
            <include>${runSuite}</include>
        </includes>
    </configuration>
</plugin>

2 ответа

Решение

То, что я сделал в некоторых из наших проектов, это использовать <profiles> в pom.xml активировать специальные наборы тестов. Если никакие профили не активны, все тесты будут выполняться с mvn test (надеюсь, это то, что вы ищете)

Вот так:

<profile>
    <id>commit-test</id>
    <build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.3</version>
            <configuration>
                <groups>com.test.CommitTest</groups>
            </configuration>
        </plugin>
    </plugins>
</build>

Тестовые классы в аннотированном виде так:

@Category(CommitTest.class)
public class SomeTestClass {
}

Я не знаю, работает ли это с @Suite а также @RunWith но если ваши тестовые наборы не слишком много классов, это не должно быть сложной задачей, чтобы изменить это.

команда: mvn clean test -Pcommit-test

Я думаю, что вы можете попробовать с -DrunSuite=**/*Suite.class

Другие вопросы по тегам