В предыдущем проекте я использовал среду тестирования Spock для unit test моего кода Java. Я нашел это действительно продуктивным, поэтому я пытаюсь добавить тесты Spock в мой текущий проект, который использует Maven в качестве инструмента построения (предыдущий проект использовался Gradle). Хотя я могу заставить Maven скомпилировать мои тесты Spock (используя groovy-eclipse-compiler
), я не могу заставить Maven запускать тесты.
Я сделал простой пример, чтобы продемонстрировать свою проблему с двумя файлами:
-
pom.xml
-
src/test/java/ASpec.groovy
Содержание pom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.group</groupId>
<artifactId>my-artifact</artifactId>
<version>0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.0.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>0.7-groovy-2.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.8.0-01</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.1.8-01</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
Содержание ASpec.groovy
:
import spock.lang.Specification
class ASpec extends Specification {
def "Test A"(){
// Always fail
expect: false
}
}
Когда я выполняю mvn clean test
(или mvn clean install
), я ожидаю, что мой единственный unit test будет запущен и завершится сбой. Пока он скомпилирован, Maven не запускает его. Кто-нибудь знает, как запустить Spock unit test из Maven (или если это возможно?)
(Я не поставил свой тест в пакете, чтобы этот пример был простым. Также я поместил свой код groovy в src/test/java, чтобы избежать настройки примера для получения исходных файлов из дополнительного каталога, снова чтобы привести пример как можно более простым.)