运行 maven 中的 kotlintest
Running kotlintest in maven
我已经努力了一段时间,现在试图从 maven 中正确地将 kotlintest 测试 运行。我远不是 maven 专家,所以我希望有人能告诉我哪里出错了。
我从 kotlin 存储库 here 中的 maven 示例开始,效果很好。添加更多测试时会出现问题。当我添加更多测试(在嵌套包中)时,实际上只有一个测试获得 "run",其他测试似乎只有一个虚拟测试方法 运行。例如,给定以下层次结构:
与thispom.xml、运行宁mvn test
给出:
Running BarTest
Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.007 sec <<< FAILURE! - in BarTest
should fail Time elapsed: 0.004 sec <<< FAILURE!
java.lang.AssertionError: expected: true but was: false
Running test.BarTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.01 sec - in test.BarTest
Running a.AThingTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in a.AThingTest
Running newtest.FooTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec - in newtest.FooTest
Results :
Failed tests:
BarTest expected: true but was: false
Tests run: 5, Failures: 1, Errors: 0, Skipped: 0
第一个:Running BarTest
实际上是正确的测试(并且故意失败)。所有其他的(Running test.BarTest
、Running a.AThingTest
、Running newtest.FooTest
)实际上并没有运行我的测试(我也有故意的失败),而且看起来只是一些虚拟测试(可能来自 IntelliTestMarker
中的虚拟 @Test
?)。我在下面包含了其中一个测试文件的示例。
我需要做什么才能 运行 我所有的实际测试?而且,最好不要在输出中显示 'dummy' 测试?
BarTest.kt:
package test
import io.kotlintest.shouldBe
import io.kotlintest.specs.ShouldSpec
class BarTest : ShouldSpec() {
init {
"Bar" {
should("succeed") {
true shouldBe true
}
should("fail") {
false shouldBe true
}
}
}
}
答案简单得令人尴尬。升级到 3.0.3。这是 3.0.0 到 3.0.2 中影响 Maven 构建的错误。
为了完整起见,这里是 KotlinTest 3 的完整 Maven 项目说明。0.x
将此依赖项添加到您的 <dependencies>
部分。
<dependency>
<groupId>io.kotlintest</groupId>
<artifactId>kotlintest-runner-junit5</artifactId>
<version>3.0.3</version>
<scope>test</scope>
</dependency>
确保将 surefire
插件添加到 <build><plugins>
部分,并使用它添加 jUnit 平台 surefire 提供程序。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</plugin>
注意:jUnit 平台和 surefire 插件 2.20.0 存在错误,因此请暂时使用 2.19.1。
这是 KotlinTest 网站上的完整项目:https://github.com/kotlintest/kotlintest/tree/master/kotlintest-samples/kotlintest-samples-maven
我已经努力了一段时间,现在试图从 maven 中正确地将 kotlintest 测试 运行。我远不是 maven 专家,所以我希望有人能告诉我哪里出错了。
我从 kotlin 存储库 here 中的 maven 示例开始,效果很好。添加更多测试时会出现问题。当我添加更多测试(在嵌套包中)时,实际上只有一个测试获得 "run",其他测试似乎只有一个虚拟测试方法 运行。例如,给定以下层次结构:
与thispom.xml、运行宁mvn test
给出:
Running BarTest
Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.007 sec <<< FAILURE! - in BarTest
should fail Time elapsed: 0.004 sec <<< FAILURE!
java.lang.AssertionError: expected: true but was: false
Running test.BarTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.01 sec - in test.BarTest
Running a.AThingTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in a.AThingTest
Running newtest.FooTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec - in newtest.FooTest
Results :
Failed tests:
BarTest expected: true but was: false
Tests run: 5, Failures: 1, Errors: 0, Skipped: 0
第一个:Running BarTest
实际上是正确的测试(并且故意失败)。所有其他的(Running test.BarTest
、Running a.AThingTest
、Running newtest.FooTest
)实际上并没有运行我的测试(我也有故意的失败),而且看起来只是一些虚拟测试(可能来自 IntelliTestMarker
中的虚拟 @Test
?)。我在下面包含了其中一个测试文件的示例。
我需要做什么才能 运行 我所有的实际测试?而且,最好不要在输出中显示 'dummy' 测试?
BarTest.kt:
package test
import io.kotlintest.shouldBe
import io.kotlintest.specs.ShouldSpec
class BarTest : ShouldSpec() {
init {
"Bar" {
should("succeed") {
true shouldBe true
}
should("fail") {
false shouldBe true
}
}
}
}
答案简单得令人尴尬。升级到 3.0.3。这是 3.0.0 到 3.0.2 中影响 Maven 构建的错误。
为了完整起见,这里是 KotlinTest 3 的完整 Maven 项目说明。0.x
将此依赖项添加到您的 <dependencies>
部分。
<dependency>
<groupId>io.kotlintest</groupId>
<artifactId>kotlintest-runner-junit5</artifactId>
<version>3.0.3</version>
<scope>test</scope>
</dependency>
确保将 surefire
插件添加到 <build><plugins>
部分,并使用它添加 jUnit 平台 surefire 提供程序。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</plugin>
注意:jUnit 平台和 surefire 插件 2.20.0 存在错误,因此请暂时使用 2.19.1。
这是 KotlinTest 网站上的完整项目:https://github.com/kotlintest/kotlintest/tree/master/kotlintest-samples/kotlintest-samples-maven