Остановить тесты при первом сбое с помощью Maven / JUnit / Spring

Я бы хотел, чтобы Maven прекратил попытки запустить мои тесты JUnit Spring, когда обнаружит первую ошибку. Это возможно?

Мои тестовые классы выглядят следующим образом, и я запускаю их как стандартную цель Maven.

@ContextConfiguration(locations = {"classpath:/spring-config/store-persistence.xml","classpath:/spring-config/store-security.xml","classpath:/spring-config/store-service.xml", "classpath:/spring-config/store-servlet.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
public class SkuLicenceServiceIntegrationTest
{
...

Если в конфигурации Spring есть ошибка, то каждый тест будет пытаться перезапустить контекст Spring, что занимает 20 секунд на ход. Это означает, что мы целую вечность не узнаем, что какие-либо тесты не удались, так как он попытается запустить все, прежде чем придет к выводу, что сборка была неудачной!


person EngineerBetter_DJ    schedule 17.10.2011    source источник
comment
Кстати: stackoverflow.com/questions/1923857/   -  person MaDa    schedule 17.10.2011


Ответы (1)


Это больше замечание, чем ответ, но все же, возможно, вы найдете это полезным.

Я бы рекомендовал выделить ваши интеграционные тесты в отдельный этап и запускать их с помощью Failsafe, а не Surefire. Таким образом, вы можете решить, нужно ли вам запускать только быстрые модульные тесты или полный набор с длительными интеграционными тестами:

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>integration-test</id>
                    <goals>
                        <goal>integration-test</goal>
                    </goals>
                </execution>
                <!-- Uncomment/comment this in order to fail the build if any integration test fail -->
                <execution>
                    <id>verify</id>
                    <goals><goal>verify</goal></goals>  
                </execution>
            </executions>
        </plugin>
    </plugins>

Обходным решением вашей проблемы может быть выделение теста в отдельное выполнение и запуск его первым; таким образом выполнение завершится неудачно, и последующие надежные / отказоустойчивые выполнения не будут запущены. См. , как настроить подключаемый модуль для этого.

person MaDa    schedule 17.10.2011
comment
По крайней мере, с Maven 2.2.1 кажется, что с отдельными выполнениями отказоустойчивого выполнения отказ первого выполнения не препятствует запуску второго выполнения в любом случае. - person Kief; 29.02.2012