问题标签 [kotest]

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 回答
798 浏览

kotlin - How to add coverage report (JaCoCo) to kotest based using build.gradle.kts?

0 投票
1 回答
1485 浏览

kotlin - Kotest 设置问题,“未解决的参考”

我正在尝试将 kotest 添加到我的库中,但我只是得到:

我一定是在 build.gradle.kts 的某个地方搞砸了,有些东西没有加载或 useJUnitPlatform() 没有运行,但我不确定在哪里。谁能发现我哪里出错了?

src/test/kotlin/io/bmb/ttnt/lib/SqliteManagerTest.kt

build.gradle.kts:

更新:

如果我使用:

虽然 io.kotest 是我在 build.gradle.kts 文件中使用的?

0 投票
2 回答
485 浏览

kotest - 如何在 Kotest 的另一台发电机中使用一台发电机的输出?

使用 Clojure 的test.checklet生成器中的示例,生成一个非空字符串列表,将该列表提供给另一个生成器以从中选择一个字符串,然后创建一个包含字符串列表和所选字符串的映射。在 Clojure 中,它看起来如下:

受到io.kotest.property.arbitrary.bind启发,我尝试按如下方式实现它,但它不起作用(Kotlin 编译器吐出“类型推断失败”):

0 投票
1 回答
961 浏览

kotlin - 无法在 kotlin 多平台模块中解析 io.kotest:kotest-runner-junit5-jvm:4.1.1

我有一个包含多个模块的项目。其中一个模块是 kotlin 多平台。我正在尝试使用 Kotest 4.1.1 为其添加单元测试。此版本发布在存储库 mavenCentral() 中,我可以在使用 java 库插件的模块中很好地使用此版本。但是在多平台模块中使用 Kotest 4.1.1 时每次尝试同步都会失败:

我不明白为什么会这样。这个错误肯定是特定于使用 kotlin 多平台插件的模块,因为使用常规 kotlin jvm 插件的同一项目中的不同模块和相同版本的 kotest 可以很好地同步。所以 gradle 绝对能够在定义的存储库中找到发布并使用 kotest 4.1.1。

结果(不足为奇),kotest 的东西不在 multiplatform 模块中 commonTest 的测试类路径中,因此单元测试类无法导入 io.kotest.xxx 包。

我希望在 JVM 运行单元测试(使用 junit5)中使用 kotest 来测试多平台代码。但这是我第一次尝试做多平台,所以一切都是可疑的:-)

下面的代码片段是来自多平台模块的 build.gradle.kts 的 sourceSets 代码。如果注释部分保持原样,gradle 同步很好,但 commonTest 中的源当然看不到 kotest。如果注释被删除,则会发生错误

这是两个模块中使用的 Kotest.framework val 的值:

在 Android Studio 中使用 kotlin 多平台插件时,有没有人让 kotest 4.1.1 工作?任何关于如何进一步诊断的想法将不胜感激。提前致谢...

配置:Android Studio 4.0 Gradle 6.5.1 Kotlin 1.3.72

0 投票
1 回答
516 浏览

kotest - 多个断言 (assertAll) - Kotest

有什么方法可以在 DSL 样式中检查 Kotest 中的多个断言 - 没有来自 JUnit 的 Assertions.assertAll 方法?

我可以写类似的东西吗

代替

0 投票
1 回答
603 浏览

kotlin - 有没有更简单的方法来使用 Kotest 基于属性的测试来测试所有排列?

我正在使用 kotlin + Kotest 属性测试,并尝试使用如下列表生成器测试 2 个参数的所有排列:

我希望使用穷举生成器能够以这样的方式生成它们,即通过 4 次迭代,所有可能的排列都将被覆盖。像这样:

相反,穷举生成器总是按照列出的顺序排列,如下所示:

这意味着我要多次测试同一个案例。

我已经尝试将一些生成器切换到 Arbs,这确实会改变顺序,但不是最佳的。为了增加击中所有案例的可能性,我必须比使用正确的顺序进行更多的测试。

我也考虑过像这样多次列出相同的元素

但这似乎不可持续,尤其是当我以后想添加更多参数或值时。

有没有办法生成详尽的排列,而不仅仅是继续遍历每个列表?

0 投票
0 回答
227 浏览

wiremock - 使用证书的 Wiremock 在 Windows 上不起作用

此错误仅发生在 Windows 操作系统上。在 Linux 和 MacOS 上运行良好。

我已确保证书的密码正确,它们确实存在于上述位置并且端口可用。语言是 Kotlin。测试框架是 Kotest。

证书位于:test/resources/ssl-certs/client-cert.p12 test/resources/ssl-certs/server-cert.p12

我得到的错误(仅在 Windows 上):

0 投票
1 回答
602 浏览

java - 有没有办法在测试之间停止 micronaut 计划的工作?

我有一个基于属性动态调度作业的应用程序。它侦听 ServiceReadyEvent,然后安排作业。下面是一个通过工厂添加到上下文的小示例。

为了测试这段代码,我使用 kotest 进行了 Micronaut 测试。

我还有另一份工作的第二次测试

我的问题在于,在第二次测试期间,我看到在第二次测试运行期间仍然安排了第一个作业:

除了作业的运行之外,关于第一次运行测试的其他一切都已停止。我发现它仍在运行,因为它在作业运行期间由于 HttpClient 被关闭而引发异常。

我试过了

  • 重建测试之间的测试上下文rebuildContext = true
  • 跟踪我班上预定的期货,JobsLoader然后在一个afterSpec函数中取消它们。当我去取消期货时,期货清单总是空的。
  • 手动刷新 TaskScheduler 和 ExecutorService bean

测试都顺利通过,但它们到处都是例外——尤其是当我开始测试越来越多的工作时,除了我正在测试的工作之外的所有工作都不断失败。我不确定这是否是 kotest、micronaut 测试、调度程序、某种组合或完全其他的问题(我也看到了 vertx 日志,但我认为这不是问题)。我真的只需要想办法在下一次测试运行之前杀死这些作业/线程。

任何帮助或想法将不胜感激!

0 投票
1 回答
1800 浏览

kotlin - TestContainers 和 Mysql:用户“@'172.17.0.1”的访问被拒绝(使用密码:否)

我编写了一个简单的存储库来使用 TestContainers 测试 Kotlin Exposed。我使用的数据库是mysql。

这是我的代码:

代码在beforeSpec

也许我错过了一些东西,任何帮助将不胜感激

我使用的库:

  • 测试
  • kotest 扩展测试容器
  • 测试容器
  • 测试容器-mysql
0 投票
1 回答
564 浏览

kotlin - kotlin kotest/kotlintest BehaviorSpec afterSpec/finalizeSpec 调用太频繁或根本不调用

我有一个 kotlin kotest(以前称为 kotlintest)BehaviorSpec

在它下面有一个Given("...")和很多When("...") Then("...")

我想在整个规范(分别是每个Given子句)完成后执行清理。

在使用时,afterSpec { }我对子句进行了多次调用Whens??),afterSpec { }而不仅仅是在规范完成(或完成/每个Given子句)之后调用

在使用finalizeSpec { }它时根本不会被调用(它里面的断点永远不会被命中)

我究竟做错了什么?

还是我错过了BehaviorSpecs 的一些奇特特征?