Я создаю пример проекта Groovy для Maven, который смешивает тесты Спока и JUnit 5 в одном проекте. В следующем разделе я опишу, как настроить такой проект Maven.
Включить Groovy в проекте
Прежде всего, вы должны включить Groovy в своем проекте. Одна возможность — добавить плагин GMavenPlus в ваш проект.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
<build> <plugins> <plugin> <groupId>org.codehaus.gmavenplus</groupId> <artifactId>gmavenplus-plugin</artifactId> <version>1.6.2</version> <executions> <execution> <goals> <goal>addSources</goal> <goal>addTestSources</goal> <goal>compile</goal> <goal>compileTests</goal> </goals> </execution> </executions> </plugin> </plugins></build> |
Цели addSources и addTestSources добавляют Groovy (тестовые) источники к основным (тестовым) источникам Maven. Расположение по умолчанию: src / main / groovy (для основного источника) и src / test / groovy (для источника тестирования). Цели compile и compileTests компилируют Groovy (тестовый) код. Если у вас нет основного кода Groovy, вы можете опустить addSource и скомпилировать .
Эта конфигурация всегда использует последнюю выпущенную версию Groovy. Если вы хотите убедиться, что используется конкретная версия Groovy, вам нужно добавить определенную зависимость Groovy в ваш путь к классам.
|
1
2
3
4
5
6
7
|
<dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>2.5.6</version> </dependency> </dependencies> |
Включить JUnit 5 в проекте
Самая простая настройка для использования JUnit 5 в вашем проекте — добавить зависимость JUnit Jupiter в путь к тестовому классу и настроить правильную версию плагина Maven Surefire (по крайней мере, версию 2.22.0).
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<dependencies><!--... maybe more dependencies --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>${junit.jupiter.version}</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <!-- other plugins --> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> </plugins> </build> |
Включить Спока в проекте
Выбор правильной зависимости от Спока зависит от того, какую версию Groovy вы используете в проекте. В нашем случае Groovy версия 2.5. Итак, нам нужен Spock в версии 1.x-groovy-2.5 в нашем пути к классам тестирования
|
1
2
3
4
5
6
7
8
9
|
<dependencies> <!-- more dependencies --> <dependency> <groupId>org.spockframework</groupId> <artifactId>spock-core</artifactId> <version>1.3-groovy-2.5</version> <scope>test</scope> </dependency> </dependencies> |
Теперь ожидается, что тесты Спока и JUnit5 будут выполнены в сборке Maven. Но только тесты JUnit5 выполняются Maven. Итак, что случилось?
Я начал менять версию Maven Surefire Plugin на 2.21.0. Затем были выполнены тесты Спока, но тестов JUnit5 не было. Причина в том, что в версии 2.22.0 Maven Surefire Plugin провайдер JUnit4 заменяется провайдером платформы JUnit по умолчанию. Но Спок в версии 1.x основан на JUnit4. Это будет изменено в версии 2 Спока. Эта версия будет основана на платформе JUnit5. Таким образом, для Spock 1.x мы должны добавить зависимость JUnit Vintage в наш путь к тестовому классу.
|
1
2
3
4
5
6
7
8
|
<dependencies> <!-- more dependencies --> <dependency> <!--Only necessary for surefire to run spock tests during the maven build --> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> <scope>test</scope> </dependency> </dependencies> |
Это позволяет запускать старшие тесты JUnit (3/4) на платформе JUnit. В этой конфигурации оба теста, Spock и JUnit 5, выполняются в сборке Maven.
связи
- Пример установки Maven для Groovy, включая JUnit 5 и Spock на Github
- Maven GMaven Plus Плагин
- Плагин Maven Surefire — Использование платформы JUnit 5
- JUnit 5 Руководство пользователя
- Spock Framework
|
Опубликовано на Java Code Geeks с разрешения Сандры Парсик, партнера нашей программы JCG. См. Оригинальную статью здесь: Настройка проекта Maven для смешивания тестов Spock 1.x и JUnit 5 Мнения, высказанные участниками Java Code Geeks, являются их собственными. |