Подтвердить что ты не робот

Запуск тестов JUnit, содержащихся в баке зависимости, используя Maven Surefire

У меня есть jar в моем репозитории maven, который содержит тесты junit, которые должны выполняться в разных проектах, потому что он способен проверять проект и проверять некоторые его особенности. К сожалению, surefire не забирает тесты, которые содержатся в банке, поскольку этот Feature Request показывает.

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

Я успешно распаковал банку с помощью модуля maven-dependency-plugin, но содержащиеся тесты в любом случае не выполняются. Вот как я настроил плагин maven-dependency, чтобы распаковать мою банку:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack</id>
            <phase>process-test-classes</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>de.mwx.test</groupId>
                        <artifactId>selenium-test-base</artifactId>
                        <version>0.1</version>
                        <overWrite>true</overWrite>
                          <outputDirectory>
                              ${project.build.directory}/classes
                          </outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

Любая помощь будет назначена.

4b9b3361

Ответ 1

Существует способ запустить тест в Maven из другой банки. из версии 2.15 maven-surefire-plugin вы можете указать maven сканировать ваши тестовые банки на наличие тестов и запускать их. Вам не нужно извлекать тестовую банку. Просто добавьте зависимость в свой тестовый jar и:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <dependenciesToScan>
                <dependency>test.jar.group:test.jar.artifact.id</dependency>
            </dependenciesToScan>
        </configuration>
    </plugin>

Взял этот материал из https://gist.github.com/aslakknutsen/4520226 И https://issues.apache.org/jira/browse/SUREFIRE-569

Как и ожидалось, это работает для JUnit и Testng. Вероятно, будет работать для всего, что может работать безошибочно.

Ответ 2

(Это просто повторяет то, что в комментарии выше от khmarbaise, но поскольку оно не было выяснено, я думаю, что это стоит повторить):

Используйте каталог тестовых классов вместо папки классов как outputDirectory:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack</id>
            <phase>process-test-classes</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>de.mwx.test</groupId>
                        <artifactId>selenium-test-base</artifactId>
                        <version>0.1</version>
                        <overWrite>true</overWrite>
                          <outputDirectory>
                              ${project.build.directory}/test-classes
                          </outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

Ответ 3

Как описано в этом выпуске, вам необходимо иметь Suite, который содержится в вашем проекте, который НЕ находится в тестовой банке.