В проекте maven с большим количеством тестов JUnit 4, surefire-junit47 не выполняет тесты.
В этом проекте нет тестовых тестов, и в помпе нет тестовых тестов. Но этот проект зависит от другого проекта, в котором есть тестирование в pom. Вы можете увидеть его импортирование testng в выводе mvn -X ниже.
Для справки, вот документация, из которой я работаю:
https://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
Вот несколько конфигураций pom, которые показывают проблему.
Учитывая организацию этого тестового класса:
- src/main/test/
- com.mycomp.qc.core.account
- CopyAccountTests.java
- CreateAccountTests.java
- DeleteAccountTests.java
- ListAccountTests.java
- ReadAccountTests.java
- UpdateAccountTests.java
- com.mycomp.qc.core.product
- CopyProductTests.java
- CreateProductTests.java
- DeleteProductTests.java
- ListProductTests.java
- ReadProductTests.java
- UpdateProductTests.java
- ..... and 300 more packages .....
И учитывая эту структуру класса теста:
package com.mycomp.qc.core.account;
import org.junit.Assert;
import org.junit.Test;
.... and more ....
public class CopyAccountTests {
@Test
public void copyAccount1() {
Assert.assertTrue("pass", true);
}
@Test
public void copyAccount2() {
Assert.assertTrue("fail", false);
}
.... and more ....
}
pom config 1: Специально включить тесты учетной записи по шаблону
Запускает все тесты учетной записи, как указано в документации.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>${surefire.version}</version>
</dependency>
</dependencies>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<includes>
<include>*Account*</include>
</includes>
<threadCount>1</threadCount>
</configuration>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
pom config 2: Специально включить тесты учетной записи по шаблону
Запускает все тесты учетной записи и продукта, как указано в документации.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>${surefire.version}</version>
</dependency>
</dependencies>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<includes>
<include>*Account*</include>
<include>*Product*</include>
</includes>
<threadCount>1</threadCount>
</configuration>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
pom config 3: Включить все тесты, основанные на верности по умолчанию
Находит и инициализирует тестовые классы, но не выполняет никаких методов @Test.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>${surefire.version}</version>
</dependency>
</dependencies>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<threadCount>1</threadCount>
</configuration>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
pom config 4: Включить все тесты по шаблону
Находит и инициализирует тестовые классы, но не выполняет никаких методов @Test.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>${surefire.version}</version>
</dependency>
</dependencies>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<includes>
<include>*Test*</include>
</includes>
<threadCount>1</threadCount>
</configuration>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
Что я пробовал:
Очевидно, из примеров я пробовал разные шаблоны включения в pom. См. Результаты, изложенные выше.
Настроен новый проект со всем тем же импортом и несколькими небольшими тестами. Все приведенные выше шаблоны включения вели себя так, как описано в документации.
Переключен верный провайдер на surefire-junit4. Это фактически выполнило все тесты, но мы столкнулись с другими проблемами.
Запуск mvn -X, в основном для поиска проблем тестирования, на основе этого ответа: Surefire не запускает тесты Junit 4 .
mvn -X показал, что плагин maven-resources-default по умолчанию загружает в junit 3.8.x, что, как говорит док, может вызвать проблемы. Обновлены ресурсы до 3.1.0, но это не решило мою проблему.
MNV -X выход
Слишком большой, чтобы включить. Если вы хотите часть этого, пожалуйста, спросите.