Kotest5 和 pitest 兼容吗?

Is Kotest5 compatible with pitest?

提问人:Rob Schwartz 提问时间:1/26/2023 更新时间:1/28/2023 访问量:107

问:

Kotest5 和 pitest 兼容吗?

我正在使用 Kotest5 进行微米级应用程序的测试。我正在使用 gradle-pitest-plugin 以及 Kotest pitest 扩展,就像文档所说的那样。但是,我一直收到类似enter image description here

我在项目中声明的测试依赖项是

"io.micronaut.test:micronaut-test-kotest5:3.6.2"
"io.kotest:kotest-runner-junit5-jvm:5.3.0"
"io.kotest.extensions:kotest-extensions-pitest:1.1.0"

我正在使用以下pitest gradle插件版本

'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.9.0'

我的pitest配置块如下所示:

pitest {
    targetClasses = ["my.group.*"]  //by default "${project.group}.
    pitestVersion = '1.9.0' //not needed when a default PIT version should be used
    threads = 4
    outputFormats = ['XML', 'HTML']
    timestampedReports = false
}

我能找到的所有工作示例都是使用 Kotest 4 的实例,但我找不到任何说明这一点的更新日志。我还没有尝试过回到 Kotest 4,我不确定 pitest 是否为我提供了足够的价值来做到这一点,但也许它根本不兼容!

Micronaut pitest kotest

评论


答:

1赞 henry 1/26/2023 #1

查看 kotest pitest 插件存储库,它是针对 pitest 1.8.0 构建的。pitest 1.9.0 中的测试插件接口发生了重大的界面更改

https://github.com/hcoles/pitest/releases/1.9.0

在插件更新之前,它只能与 pitest 1.8.1 一起使用。

评论

0赞 Rob Schwartz 1/26/2023
有趣 - 好发现!我仍然遇到同样的问题 - 这是我正在使用的版本。 现在,使用gradle插件配置的piTest版本是但是,我仍然收到相同的错误。我现在很好奇我的项目中某处是否存在 Junit 版本不匹配,因为我相信这就是用作运行器的内容。info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.9.0io.kotest.extensions:kotest-extensions-pitest:1.1.0pitestVersion = '1.8.1'
0赞 henry 1/27/2023
如果启用 pitest 的详细日志记录,可能会有一些关于问题所在的信息线索。
0赞 Rob Schwartz 1/27/2023
不幸的是,它没有给出任何其他信息,因为我认为 pitest 的“配置”正在工作。但是,我没有意识到我的屏幕截图遗漏了一个我无意遗漏的关键部分。那行是 .我发现 Kotest Spring 扩展使用此方法存在问题,但我找不到 pitest 的 Kotest 扩展的任何修复/解决方案。2:43:12 PM PIT >> FINE : MINION : java.lang.NoSuchMethodError: 'io.kotest.core.descriptors.TestPath io.kotest.core.descriptors.Descriptor$DefaultImpls.path$default(io.kotest.core.descriptors.Descriptor, boolean, int, java.lang.Object)'
0赞 Rob Schwartz 1/27/2023
呵呵,所以我关注了 Kotest 的春季扩展问题,我正在阅读 kotest 5.4.0 引入时该问题。所以我强制所有版本的 Kotest 使用 5.3.2,现在 pitest 可以工作了!我会更深入地挖掘为什么会这样,希望能解决这个问题。
0赞 sksamuel 2/5/2023
现在有一个适用于 1.9.0 的 kotest pitest 扩展的新版本
0赞 Rob Schwartz 1/28/2023 #2

多亏了亨利,我发现 Kotest 引入了回归。因此,我通过执行以下操作来强制执行以下操作,从而强制执行以下操作:5.4.05.3.2

allprojects {
    configurations.all {
        resolutionStrategy.eachDependency {
            if (it.requested.group == 'io.kotest') {
                it.useVersion '5.3.2'
            }
        }
    }
}

然后Pitest工作得很好!因此,据我所知,这不是 Pitest 或 Pitest Gradle 插件的问题。

在这里也打开了一个 kotest 和 pitest 扩展的问题,供其他人效仿。