maven: выполнить интеграционные тесты с junit 4, переопределяя настройки в родительском pom - PullRequest
0 голосов
/ 20 марта 2020

Я перешел на JUnit 5. В своих интеграционных тестах я использую PowerMock, которая, к сожалению, пока не поддерживает последнюю версию JUnit (см. https://github.com/powermock/powermock/issues/830). Поэтому я решил запустить модульные тесты с более новой версией, которая определена по умолчанию в родительском POM, и выполнять интеграционные тесты только для JUnit 4. Я попытался переопределить плагин в дочернем POM, но тесты не получат выполнено, вероятно, потому что тесты не распознаются как тесты JUnit 4, поэтому плагин maven-failsafe-plugin не находит ни одного интеграционного теста для выполнения.

Родительский POM:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>3.0.0-M4</version>
            <executions>
                <execution>
                    <id>integration-tests</id>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                    <configuration>
                        <argLine>${failsafeOverridableArgLine}
                            -Djacoco-agent.destfile=${project.build.directory}/coverage-reports/jacoco-it.exec</argLine>
                        <skipTests>${skip.integration.tests}</skipTests>
                        <includes>
                            <include>**/*IntegrationTest.java</include>
                        </includes>
                    </configuration>
                </execution>
            </executions>
        </plugin>
      ...
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.5.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.5.2</version>
        <scope>test</scope>
    </dependency>

Дочерний POM:

       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>3.0.0-M4</version>
            <executions>
                <execution>
                    <id>integration-tests</id>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                    <configuration combine.self="override">
                        <argLine>${failsafeOverridableArgLine}
                            -Djacoco-agent.destfile=${project.build.directory}/coverage-reports/jacoco-it.exec</argLine>
                        <skipTests>${skip.integration.tests}</skipTests>
                        <includes>
                            <include>**/*IntegrationTest.java</include>
                        </includes>
                        <classpathDependencyExcludes>
                            <classpathDependencyExclude>org.junit.jupiter:junit-jupiter</classpathDependencyExclude>
                            <classpathDependencyExclude>org.junit.jupiter:junit-jupiter-engine</classpathDependencyExclude>
                        </classpathDependencyExcludes>
                        <additionalClasspathElements>
                            <additionalClasspathElement>${settings.localRepository}/junit/junit/4.12/junit-4.12.jar</additionalClasspathElement>
                        </additionalClasspathElements>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Корректна ли эта конфигурация?

1 Ответ

0 голосов
/ 22 марта 2020

Проблема решена. Мне нужно было добавить следующие зависимости в переопределенный плагин:

          <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-api</artifactId>
                    <version>3.0.0-M4</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>3.0.0-M4</version>
                </dependency>
            </dependencies>

Теперь интеграционные тесты выполняются с junit4, а юнит-тесты - с junit5

...