问题标签 [kotlintest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
56 浏览

testing - 使用 Gradle 的表驱动测试:NoClassDefFoundError TableTestingKt

我在 Spring Boot 项目中使用kotlintest进行单元和集成测试。我可以在 IntelliJ 中毫无问题地运行我的单元测试,并且它们都是绿色的。但是,当我在 gradle 中运行我的测试时./gradlew clean test,我所有使用table(),headers()row()函数的测试都失败了,但出现以下异常:

所有其他测试都很好。

这是我的一部分build.gradle

根据我的阅读,我什至不需要io.kotlintest:kotlintest-assertions依赖项,因为它应该包含在跑步者中。

看起来 TableTestingKt 没有像它应该的那样转换为一个类。

0 投票
0 回答
39 浏览

kotlin - 为什么 KotlinTest IDEA 插件在使用 IsolationMode.InstancePerLeaf 时只嵌套第一片叶子?

当我这样做时:

IntelliJ 显示了这一点:

在此处输入图像描述

为什么最后两个叶子测试没有嵌套为第一个叶子测试的兄弟姐妹?

我是否不了解InstancePerLeaf设置的用例,并且测试在使用时不应该以这种方式嵌套?

更新:我创建了一个错误

0 投票
0 回答
70 浏览

kotlin - 比较两个字符串并使用 diff 显示结果 - 这可以快速发现差异

当使用#kotlintest 将两个字符串与这样的测试进行比较时:

,输出如下所示:

即使有这么短的字符串 - 也很难发现这两个字符串之间究竟有什么不同。如果比较较长的字符串或对象属性,则要困难得多,因为结果只是一条长的可滚动行。

然而——我们都非常习惯于阅读“差异”——它的 +/- 线条和颜色,可以让我们立即发现差异。

例如,当由rspec(test lib for ruby​​) 运行时,这是相同断言的结果:

如您所见 - 它在两个方面对我有帮助。首先 - 它将两个字符串放在彼此下方,以便我可以发现字符级别的差异。其次,它diff与我们熟悉的颜色相得益彰,让我立即看到没有什么不同,有什么不同。

有没有办法实现一些相似的测试结果比较,并提供相似的好处来快速发现差异?

我尝试了 KotlinTest 和 JUnit5 - 两个比较结果都非常“可以在一行中水平滚动”。也许在其他一些 Kotlin 测试框架中?

谢谢!

0 投票
1 回答
526 浏览

unit-testing - KotlinTest 基于属性的测试和生成器

我在 Kotlin 中有以下有向图的定义。(我还在学习 Kotlin,所以请原谅任何缺点。总是欢迎改进和建议。)我的目标是有一个方法,reverse它保持顶点和循环,但交换其他边的方向。

我想使用基于属性的测试来使用 KotinTest 测试此代码,但我在构建它以正确生成无向图的随机样本时遇到了麻烦。如果我能做到这一点,我可以将边缘方向反转两次,然后确保实现原始图形。

我熟悉Gen.list,Gen.choose等,但我似乎无法将这些部分组合在一起以获得最终产品,即随机无向图。

我已经完成了这一点,但这显然缺少部分,我希望有人能够提供帮助。我怀疑我可以在 Scala 中做到这一点,因为我在那里有更多的经验,但我决心学习 Kotlin。最终,大致如下:

任何帮助/建议将不胜感激。谢谢!

0 投票
1 回答
40 浏览

testing - Kotlintest 扩展为测试提供信息

JUnit 5 有一个简洁的扩展功能,即使它在 JUnit 框架上运行,它也与 kotlintest 不兼容。虽然我们只需要记录一些内容的简单用例可以由TestListener. 特别是如何与扩展进行交互?理想情况下,我想获得扩展名,以便查询它。

在 JUnit5 中它会是(无论如何都是选项之一)

在 JUnit4 中它会更简单

当然,有一个 SpringExtension 但它会反射类的实例化。有什么方法可以更轻松吗?

0 投票
1 回答
646 浏览

kotlin - 将 mockk 验证与断言库一起使用时检查所有断言和验证

我希望测试报告所有断言和验证。所以mockk验证断言库(在这种情况下,KotlinTest)断言都应该运行而不是短路。

换句话说,我不希望测试停止......

也不...

这个怎么做?如果我可以同时使用一种工具,我愿意只使用一种工具。

0 投票
3 回答
4301 浏览

unit-testing - Kotlintest 与 Mockk 如何清除验证计数

所以我有以下代码:

问题在于,这两种情况都通过了,即使第二种情况没有采取任何行动。我预计第二种情况会失败,因为 sendSms 方法甚至没有被调用。

  1. 如何重置 smsRepository 验证计数?
  2. 如何在每个When案例之前重置该计数?
0 投票
1 回答
728 浏览

android - KotlinTest 与 Mockk 的并行性

所以我一直在将 kotlintest 与 mockk 结合使用,但是通过将其添加到 ProjectConfig 类中从单线程模式切换到多线程时遇到了问题:

如果我以单一模式运行。我所有的测试都通过了,但就在我切换到并行性时,其中一些使用模拟的测试开始失败。

我有各种方法,例如:

所以我想像这样的方法可能会通过在验证块之前清除所有模拟数据而导致我的模拟失败。

有没有办法强制不同线程上的测试使用他们自己的 Mockk 实例并强制 clearAllMocks() 方法只清除调用线程上的模拟?如果没有,还有哪些其他代码实践可以帮助解决这些问题?

0 投票
1 回答
810 浏览

spring - 使用 springmockk 时 Kotlintest 不执行测试

我试图为我的 kotlin spring 应用程序编写一个集成测试。为此,我正在使用 kotlintest 框架。由于我需要在我的应用程序中模拟其中一个 bean,我还添加了带有 springmockk 扩展的 mockk。添加 springmockk 扩展后,测试不再执行。

我注意到一旦将 springmockk 添加到 gradle testImplement 依赖项中就会发生这种情况,甚至不必在应用程序代码本身中导入它。

在 github 上,我发现了一个问题,遗憾的是已经关闭,没有任何适当的方式将这两个框架一起使用:https ://github.com/Ninja-Squad/springmockk/issues/26

编辑:

这是一个示例测试,在使用 mockkito 时有效,但在使用 springmockk 时无效。

./gradlew test --rerun-tasks输出:

0 投票
2 回答
454 浏览

unit-testing - KotlinTest 与 Koin:InvocationTargetException

我无法将 Koin 2.0.1 与 Kotlin-test 3.4.2 一起使用。我得到这样的 InvocationTargetException :

我在 GitHub 上创建了一个重现此错误的小示例: https ://github.com/elifarley/kotlin-tests-with-koin-examples

只需执行这些命令来克隆 repo 并运行测试:

这是主要的 Kotlin 文件: