问题标签 [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 投票
2 回答
483 浏览

kotlin - 为什么标准迭代器比 Kotlin 中的序列快?

我是序列的新手,所以我可能(或多或少)做了一些非常错误的事情,但我有一个问题:

我写了两个函数:

现在我正在运行一个用 编写的测试kotest,其中两个函数都接收Int.MAX_VALUEnumber.

该功能的执行时间isPrimeNumber1()约为 3.5 秒,而第二个功能的执行时间isPrimeNumber2()约为 8.5 秒。

为什么呢?我错过了关于序列的东西吗?或者也许我的代码以正确但非常不理想的方式实现其目的?

0 投票
1 回答
811 浏览

unit-testing - Kotest 用 java.lang.IllegalArgumentException 打破 gradle 的 :test 任务:收到一个未知 ID 的测试失败事件

我开始使用 Kotlin 在 Kotlin 中进行单元测试。我使用以下与 Kotest 以某种方式集成的技术:

  • Kotest 本身
  • 科特林/JVM
  • 摇篮
  • 引诱
  • 皮泰斯特
  • IntelliJ IDEA 插件“Kotest”

在 gradle 中,我包含了以下依赖项:

  • io.kotest:kotest-runner-junit5:$kotest_version: Kotest 框架
  • io.kotest:kotest-assertions-core:$kotest_version: Kotest 核心 JVM 断言
  • io.kotest:kotest-property:$kotest_version: Kotest 属性测试
  • io.kotest:kotest-extensions-allure:$kotest_version: Allure 的数据收集
  • io.kotest:kotest-plugins-pitest:$kotest_version: Pitest 插件

问题是,现在,当我通过 gradle:test任务运行测试时,出现以下异常:

java.lang.IllegalArgumentException: Received a failure event for test with unknown id '2.27'. Registered test ids: '[2.1, :test, 2.25]'

每次测试运行的未知 id / 注册 id 都不同。实际上出现了很多错误,但那个是最后一个出现的错误。下面是完整的 gradle 输出(缩短的内部调用):

可能相关的内容:

1. 我在我的build.gradle.kts

我文件的以下部分build.gradle.kts涵盖了所有与测试相关的内容,包括设置测试环境的任务和之后清理的第二个任务:

2.首先导致错误的测试套件

该错误发生在我在以下 Kotest 测试类中工作时,更准确地说,它发生在我尝试实现测试工厂并包含它之后:

所有JSONModelXX类都是仅用于测试的模型数据类。JSONModelMarker是所有JSONModelXX类都实现的标记接口。JSONFile<T>是我要测试的课程。

3. IntelliJ 通知

我总是从 IntelliJ 收到“所有测试成功”的通知,但是当我查看测试工具窗口时,测试被标记为“失败”,因为 gradle 任务:test失败。我不知道这对这个问题有何影响。

4. 我有时也会收到不同的异常

如果我通过 IntelliJ gutter 图标运行测试套件中的第一个测试,我会得到一个不同的异常:java.lang.ExceptionInInitializerError. 我做了一些挖掘,发现Scanner用于读取JSONFile<T>类中 JSON 文件内容的那个会抛出一个NoSuchElementException,因为(出于某种原因)该文件在执行此测试期间为空。 这很奇怪,因为我的自定义任务实际上在每个文件中写入了一些内容,而当我查看文件之后或运行时,这些内容实际上就在那里。这是完整的控制台输出::preTestbuild.gradle.kts :preTest:test

现在我不知道这是问题的一部分还是单独的问题,但只是为了确定我想将它包括在这里。当我在 File->Settings->Build, Execution, Deployment->Build Tools->Gradle 中将测试运行器切换到 IntelliJ IDEA 时,也会出现同样的问题

而已!现在我的问题是:是什么导致了这个错误,我该如何解决?

与运行

  • 科特林/JVM 1.4.10
  • kotest-runner-junit5 4.3.1
  • kotest 断言核心 4.3.1
  • kotest 属性 4.3.1
  • kotest-extensions-allure 4.3.1
  • kotest-插件-pitest 4.3.1
  • 毕业 6.7
  • 魅力 2.13.6
  • allure gradle 插件 2.8.1
  • Pitest gradle 插件 1.5.1
  • Intellij IDEA Ultimate 2020.2
  • kotest IntelliJ 插件 1.1.20-IC-2020.2
  • 开放JDK 11.0.2
0 投票
1 回答
164 浏览

android - 在 Android 项目中使用 AbstractProjectConfig

我正在尝试为 Kotest 设置全局项目配置。我已按照https://kotest.io/project_config/的说明进行操作

但是,我在下面有许多未解决的项目:

其中,在 import 语句中,core未解决。

AbstractProjectConfig未解决。

AssertionMode未解决。

那么当然,assertionMode“什么都不覆盖”

在我的应用程序级 build.gradle 中,我有

是否可以AbstractProjectConfig在 Android 项目中使用?如果是这样,请问我哪里出错了?

0 投票
1 回答
232 浏览

android - 将 LiveDataTestUtil 与 Kotest 一起使用

我一直在阅读作为 Android 架构组件示例的一部分提供的 LiveDatatestUtil.kt,并且我一直在尝试尽可能地在 Kotest 中使用它来测试事件。主要是因为(现在)Kotest 不提供 LiveData 测试功能。是否有一种惯用的方法来测试事件(基于 LiveData),即基于已发布的实用程序?

0 投票
1 回答
107 浏览

kotlin-multiplatform - 在多平台模块上使用 kotest FreeSpec

我看起来没有带有 的本机模块io.kotest.core.spec.style.FreeSpec,还是我遗漏了什么?

0 投票
1 回答
856 浏览

kotlin - 为什么 IntelliJ Kotest 插件不能正常工作?

我已经为 IntelliJ (2020.3) 安装了 Kotest 插件 (1.1.22-IC-2020.3)。它允许我为/从我的 Kotlin 类创建 Kotest 测试,但这些测试不能从测试类运行。

kotest 面板显示好像没有测试存在

如果我创建一个新的 Kotest 运行配置,我可以运行测试类,但总是抛出这个异常:

测试类编译并且 jarkotest-core-jvm-4.1.1.jar作为外部库包含在内。

有人可以对此提供一些建议吗?

0 投票
2 回答
243 浏览

kotlin - 在 intellij 中使用 kotest 时“表达式未使用”

使用 Kotest 编写的这个 kotlin 测试,IntelliJ 显示警告“表达式未使用”并且语法着色不起作用。此外,在运行测试时,找不到测试。

0 投票
1 回答
232 浏览

kotest - 一遍又一遍地运行相同的kotest测试的简单方法?

使用 kotest 框架连续运行相同测试和相同套件或类 n 次的最简单方法是什么?

0 投票
1 回答
344 浏览

kotlin - Kotest - 生成无重复的详尽对象排列

我希望能够生成详尽的对象排列。想象以下对象

出于测试目的,我想限制nameto3值。Mohammad, Nasir,Rasulage410, 20, 30, 40. 我想生成 12 个对象,其中每个名称都有 4 个年龄。

我可以生成一个arbitrary绑定,但是不能保证12迭代每个都有一个唯一的对象。我必须增加迭代次数,并清除重复项。

查看源代码,我似乎找不到方法。我希望社区中有人对此有需求。

谢谢。

注意:我正在寻找一种使用Exhaustive生成器的方法,而不是Arb生成器。我可以进行一些后期处理并删除重复项,但我希望预先获得更可靠、独特的东西。

注意Rasul:40是重复的。Mohammad:10错过了。

根据@Tenfour04 的评论,一种可能的解决方案是使用timesand map。尽管在我的领域中,映射变得多毛,因为我们将不得不处理Pairs和处理。PairsPairs

0 投票
0 回答
432 浏览

spring-boot - 如何使用 Kotlin 和 Kotest 正确地对 Spring Boot Reactive 应用程序进行单元测试

我对 Kotlin 和 Kotest 还很陌生,一直在摸索如何正确地对 webflux 应用程序进行单元测试。在这里查看kotest 示例,对我来说,这看起来像是在启动WebTestClient服务器,更像是集成测试(如果我错了,请纠正我)。

我的应用程序相当简单,我有一个休息控制器,我正在使用构造函数注入来注入我的服务。

此服务用于WebClient调用不同的外部服务,该服务返回一个Mono<MyResponse>. 我的测试看起来像这样:

我得到的错误是: