如何 运行 使用 Maven 进行 Spek 测试?
How to run Spek tests with Maven?
我正在尝试 运行 使用 Maven 进行 Spek 测试。我已经像这样设置了 Maven:
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<configuration/>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
此外,我在 src/test/kotlin 中进行了一些 Spek 测试。我可以在 IDE 中 运行 这些很好,但是当我 运行 mvn test
它们被 surefire 插件完全忽略(它报告 0 个测试是 运行) .是否可以 运行 使用 maven 进行 Spek 测试,如果可以,将如何设置?我在 spek 主页上找不到任何相关信息。
我可以用一个小示例项目重现您的问题,you can find on GitLab.com。
如果您 运行 mvn clean test
,surefire 将找不到任何测试:
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ spek-maven-sample ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.074 s
[INFO] Finished at: 2016-07-27T00:49:14+02:00
[INFO] Final Memory: 36M/363M
[INFO] ------------------------------------------------------------------------
这可以通过在 Surefire 插件中明确包含测试规范来规避。比如说,你所有的规格都被命名为 *Spec.*
,然后在你的 pom.xml
:
中明确配置 surefire
<build>
<plugins>
<!-- other build plugins like the kotlin-maven-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<includes>
<include>**/*Spec.*</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
将导致执行测试
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ spek-maven-sample ---
[INFO] Surefire report directory: C:\Dev\IDEA\spek-test\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running NonsenseTestableSpec
Proof that 'should return true' ran
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.077 sec
Results :
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.335 s
[INFO] Finished at: 2016-07-27T01:02:12+02:00
[INFO] Final Memory: 26M/363M
[INFO] ------------------------------------------------------------------------
您可以找到上述存储库的完整工作示例 on the branch "explicit-surefire-config"。
我正在尝试 运行 使用 Maven 进行 Spek 测试。我已经像这样设置了 Maven:
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<configuration/>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
此外,我在 src/test/kotlin 中进行了一些 Spek 测试。我可以在 IDE 中 运行 这些很好,但是当我 运行 mvn test
它们被 surefire 插件完全忽略(它报告 0 个测试是 运行) .是否可以 运行 使用 maven 进行 Spek 测试,如果可以,将如何设置?我在 spek 主页上找不到任何相关信息。
我可以用一个小示例项目重现您的问题,you can find on GitLab.com。
如果您 运行 mvn clean test
,surefire 将找不到任何测试:
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ spek-maven-sample ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.074 s
[INFO] Finished at: 2016-07-27T00:49:14+02:00
[INFO] Final Memory: 36M/363M
[INFO] ------------------------------------------------------------------------
这可以通过在 Surefire 插件中明确包含测试规范来规避。比如说,你所有的规格都被命名为 *Spec.*
,然后在你的 pom.xml
:
<build>
<plugins>
<!-- other build plugins like the kotlin-maven-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<includes>
<include>**/*Spec.*</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
将导致执行测试
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ spek-maven-sample ---
[INFO] Surefire report directory: C:\Dev\IDEA\spek-test\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running NonsenseTestableSpec
Proof that 'should return true' ran
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.077 sec
Results :
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.335 s
[INFO] Finished at: 2016-07-27T01:02:12+02:00
[INFO] Final Memory: 26M/363M
[INFO] ------------------------------------------------------------------------
您可以找到上述存储库的完整工作示例 on the branch "explicit-surefire-config"。