首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在maven中运行kotlintest

在maven中运行kotlintest
EN

Stack Overflow用户
提问于 2018-04-05 18:11:23
回答 1查看 1.4K关注 0票数 1

我已经挣扎了一段时间,试图让kotlintest测试从maven中正常运行。我不是专家,所以我希望有人能告诉我哪里出了问题。

我从kotlin repo 这里的maven示例开始,它运行得很好。当增加更多测试时,就会出现这个问题。当我添加更多的测试(在嵌套包中)时,只有一个测试实际得到“运行”,其他测试似乎只是运行了一个虚拟测试方法。例如,给定以下层次结构:

使用 pom.xml,运行mvn test提供:

代码语言:javascript
复制
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.BarTestRunning a.AThingTestRunning newtest.FooTest)实际上都没有运行我的测试(我也有有意的失败),似乎只是一些虚拟测试(可能来自IntelliTestMarker中的虚拟@Test?)。我在下面包含了其中一个测试文件的样本。

我需要做些什么来运行我所有的实际测试?而且,最好不要在输出中显示“虚拟”测试?

BarTest.kt:

代码语言:javascript
复制
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
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-05 22:40:02

答案非常简单,令人尴尬。升级到3.0.3。这是3.0.0到3.0.2中的一个bug,影响了Maven构建。

为了完整起见,下面是KotlinTest 3.0.x的完整maven项目说明。

将此依赖项添加到<dependencies>部分。

代码语言:javascript
复制
    <dependency>
        <groupId>io.kotlintest</groupId>
        <artifactId>kotlintest-runner-junit5</artifactId>
        <version>3.0.3</version>
        <scope>test</scope>
    </dependency>

确保您将surefire插件添加到您的<build><plugins>部分,并在其中添加jUnit平台万无一失的提供者。

代码语言:javascript
复制
        <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平台上有一个bug,插件为2.20.0,所以现在请继续使用2.19.1。

以下是KotlinTest网站上的完整项目:https://github.com/kotlintest/kotlintest/tree/master/kotlintest-samples/kotlintest-samples-maven

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49678874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档