Остановите тесты при первом отказе с Maven / JUnit / Spring - PullRequest
2 голосов
/ 17 октября 2011

Я бы хотел, чтобы 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 секунд. Это означает, что мы целую вечность не обнаруживаем, что какие-либо тесты провалились, так как он попытается выполнить весь пакет до того, как сделать вывод, что сборка была неудачной!

1 Ответ

1 голос
/ 17 октября 2011

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

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

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

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

...