问题标签 [spek]

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

gradle - 如何设置 Spek 框架

我检查了文档: https ://spekframework.org/migration/#maven-coordinates

我想试用 2.xx 版本,所以我添加了build.gradle

但 Gradle 无法在 Maven Central 中找到该 2.xx 库: https ://search.maven.org/search?q=spek-dsl-jvm

我该怎么办?有专门的回购吗?

0 投票
1 回答
230 浏览

java - Spek 测试未在 Maven Java 项目中运行

我有一个现有的 Java 项目,我希望在其中介绍一些 Spec 测试(在 kotlin ofc 中)

我添加了 spek 依赖项

并按照此处的描述配置了 kotlin-maven-plugin 和 maven-compiler-plugin https://kotlinlang.org/docs/reference/using-maven.html#compiling-kotlin-and-java-sources
(省略了 maven-compiler -插件配置来自问题)

我尝试过不同版本的 kotlin、spek 和 surefire 插件,但直到现在都没有运气。

每次我尝试运行测试时,都没有执行任何 Spek 测试,即使它们在target/test-classes. (对于 CalcSpec,生成了 5 个 .class 文件)

0 投票
2 回答
960 浏览

android - 使用 LiveData、RxJava/RxKotlin 和 Spek 在 Android 上进行测试的脆弱性

设置:

在我们的项目中(在工作中 - 我无法发布真实代码),我们已经实现了干净的 MVVM。视图通过 LiveData 与 ViewModel 通信。ViewModel 承载两种用例:做某事的“动作用例”和“状态更新用例”。反向通信是异步的(就动作反应而言)。它不像 API 调用,您可以从调用中获取结果。是BLE,所以写完特性后会有一个我们监听的通知特性。所以我们使用了大量的 Rx 来更新状态。它在科特林。

视图模型:

更新状态用例:

我们使用 Spek 进行单元测试。

起初我们使用的是 Observable 而不是 BehaviorSubject:

而不是:

但是单元测试很不稳定。大多数情况下它们会通过(总是在孤立运行时),但有时它们会在运行整个套装时失败。考虑到它与 Rx 的异步特性有关,我们移至 BehaviourSubject 以便能够控制 onNext() 何时发生。当我们在本地机器上从 AndroidStudio 运行它们时,测试现在通过了,但它们在构建机器上仍然不稳定。重新启动构建通常会使它们通过。

失败的测试总是我们断言 LiveData 值的测试。所以嫌疑人是 LiveData、Rx、Spek 或它们的组合。

问题:有没有人有过使用 LiveData、Spek 或 Rx 编写单元测试的类似经历,你是否找到了解决这些脆弱问题的编写方法?

.....................

使用的辅助函数和扩展函数:

0 投票
1 回答
595 浏览

java - 将验收测试作为单独的 Gradle 任务运行

我正在尝试Gradle with Kotlin DSL为我的项目进行配置。它由两个模块组成。模块 A是一个简单的Java 11应用程序。模块 B包含Kotlin使用Spek.

我想配置 gradle 以便gradle test不运行验收测试,并且这些测试仅与 task 一起运行gradle acceptanceTest。我在下面尝试了其他过滤器变体的配置,包括和排除但没有运气。我错过了什么?

0 投票
0 回答
737 浏览

junit - 警告:ID 为“spek2”的 TestEngine 无法使用 Gradle v5.2.1 发现测试

在 Gradle Kotlin DSL 中使用 Spek 2 时遇到了一些问题。当我右键单击我的测试文件夹并点击时,run all tests我收到此错误:WARNING: TestEngine with ID 'spek2' failed to discover tests. 我是否错误地执行构建脚本?这是在一个子项目中。

我也使用教程中的格式进行了尝试:

但它有同样的错误。由于某种原因,Spek 无法找到测试。有任何想法吗?

编辑:这是完整的堆栈跟踪

更新:这被确定为一个错误并在 Spek 2.0.1 中修复。

0 投票
1 回答
65 浏览

android-studio - 从 Spek 1.x 迁移到 Spek 2.x 错误

我正在尝试迁移到 Spek 2.x。看起来一切都设置好了,但我得到以下异常:

线程“主”java.lang.IllegalStateException 中的异常:clz.java。package在 org.spekframework.spek2.runtime.SpekRuntime.discover(SpekJvmRuntime.kt:30) 在 org.spekframework 的 org.spekframework.spek2.runtime.scope.PathBuilder$Companion.from(Path.kt:86) 不得为空.ide.Spek2Con​​soleLauncher.run(console.kt:21) at org.spekframework.ide.ConsoleKt$main$1.invoke(console.kt:34) at org.spekframework.ide.ConsoleKt$main$1.invoke(console.kt ) 在 shadow.com.xenomachina.argparser.SystemExitExceptionKt.mainBody$default(SystemExitException.kt:72) 在 org.spekframework.ide.ConsoleKt 的 shadow.com.xenomachina.argparser.SystemExitExceptionKt.mainBody(SystemExitException.kt:74)。主要(控制台.kt:32)

我只是运行这个测试来保持简单:

起初我也没有得到排水沟图标,但我恢复到旧的插件版本https://github.com/spekframework/spek/issues/569

编辑:

package此处为空。我有一个带有味道的应用程序,这可能是问题吗?

我已经按照 Spek Framework 设置信息设置了一个新项目,并且没有出现任何问题。

在什么情况下这可能是空的?

0 投票
1 回答
167 浏览

unit-testing - 测试条件时的 Mockito、TooManyActualInvocations Spek 框架

对于场景单元测试用户输入密码和密码确认。当我尝试验证在不同on()块中调用的相同方法时,我在第二个块中收到以下错误on()

这是代码:

但如果我调用不同的方法,它可以正常工作。我认为这不是 Spek 框架的用途,因为我看到的所有示例总是使用 Assert。有没有办法我可以在 Spek 中编写以下条件而不会出现错误?即使是不同的given()仍然会导致错误。

0 投票
1 回答
370 浏览

maven - 如何让 JUnit 4.0 和 Spek Framework 2.0 一起工作

我有一些用 Groovy 和 JUnit 4 编写的遗留单元测试,我正在使用 Kotlin 和 Maven 中的 Spek 框架 2 进行一些新的单元测试。不幸的是,每当我运行测试时,我只看到 Spek 测试,而不是遗留的 JUnit 4 测试。

我在 gradle here上找到了一个可能的解决方案,但我在 Maven 上,所以我不知道如何将该特定配置转换为 maven。

这是我的 pom.xml 文件

更新:我实际上能够缩小问题范围。当我使用

如果没有版本,Spok/Groovy 中的所有 JUnit 测试都会运行,但 Spek 2.0 测试不会。但是当我按照他们自己的页面中的说明将 maven-surefire-plugin 更新到 2.22.0 或更高版本时,Spek2.0 测试运行,但 Spok/Groovy 测试不运行。想法???

0 投票
1 回答
234 浏览

testing - 使用 Kotlin 为 http 方法设置 Spek 测试?

如何使用 kotlin 启动 spek 测试来测试是否调用了 HTTP 方法 post?让我失望的是我在模拟上下文时遇到了麻烦。我想传入 HttpMethod.POST 以外的方法来触发 else 块。

当前失败并显示消息-

它也失败说 context.request 不能为空

测试文件:

0 投票
1 回答
485 浏览

kotlin - 在 spek 测试中记录了一个错误:“无法在此上下文中访问”

在尝试进行 spek 测试(对我们来说是新事物)时,我们在尝试验证模拟上的调用时遇到错误。错误是:

在此上下文中无法访问“m3CustomerService”。java.lang.AssertionError:在此上下文中无法访问“m3CustomerService”。

我一直无法弄清楚为什么这个错误不断发生。有人有什么主意吗。

更新:当使用 memoized 获取列表时,对 m3CustomerService 的调用从未完成,因此测试失败。