Как запустить тесты junit, когда причал настроен на запуск / завершение при предварительном / постинтеграционном тесте?

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

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.7.1</version>
            <executions>
                <execution>
                    <id>integration-test</id>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>integration-test</goal>
                    </goals>
                </execution>
                <execution>
                    <id>verify</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.10.v20130312</version>
            <configuration>
                <connectors>
                    <connector implementation="org.eclipse.jetty.server.bio.SocketConnector">
                        <port>9090</port>
                        <maxIdleTime>60000</maxIdleTime>
                    </connector>
                </connectors>
                <scanIntervalSeconds>10</scanIntervalSeconds>
                <stopKey>foo</stopKey>
                <stopPort>9999</stopPort>
                <jvmArgs>-Xms1024m -Xmx2048m</jvmArgs>
            </configuration>
            <executions>
                <execution>
                    <id>start-jetty</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>start</goal>
                    </goals>
                    <configuration>
                        <scanIntervalSeconds>0</scanIntervalSeconds>
                        <daemon>true</daemon>
                    </configuration>
                </execution>
                <execution>
                    <id>stop-jetty</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.16</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit4</artifactId>
                    <version>2.16</version>
                </dependency>
            </dependencies>
        </plugin>

Пожалуйста, помогите мне с этим! Как обеспечить выполнение тестов junit (во время сборки maven) на этапе интеграции?


person April    schedule 10.04.2014    source источник


Ответы (1)


Фаза Maven test предназначена для запуска «модульных» тестов, то есть небольших тестов, которые проверяют, что минимально возможная функциональность или «модуль» функционирует должным образом.

Они запускаются плагином Maven Surefire. Дополнительную информацию об этом можно найти здесь: http://maven.apache.org/surefire/maven-surefire-plugin/

У вас есть интеграционные тесты. То есть это более широкие тесты, которые проверяют, что разные части вашего кода интегрируются вместе. Это выполняется плагином Maven Failsafe, более подробную информацию о котором вы можете найти здесь: http://maven.apache.org/surefire/maven-failsafe-plugin/

Что вам нужно сделать, так это идентифицировать ваши интеграционные тесты как интеграционные тесты для плагина Failsafe. По умолчанию он выбирает классы с именами **/IT*.java, **/*IT.java и **/*ITCase.java. Соглашения об именах между плагинами по умолчанию являются взаимоисключающими, поэтому ваши тесты должны выполняться только в одном или другом.

Если у вас есть только интеграционные тесты, вы можете настроить Surefire для запуска во время фазы integration-test. Инструкции по этому поводу см. Здесь: http://docs.codehaus.org/pages/viewpage.action?pageId=62120

person Mardoz    schedule 10.04.2014
comment
да, но если я хочу, чтобы тесты junit запускались также на этапе интеграции, возможно ли это? - person April; 10.04.2014
comment
Почему вы хотите, чтобы одни и те же тесты выполнялись в несколько этапов? Решение в параграфе 4 - это правильный путь, которому вы должны следовать. - person Mardoz; 10.04.2014