Tag: spek

JaCoCo Gradle插件报告每个包的0.0类覆盖率

我的目录结构是: |/src | |/main | | |/com.episo | | | |/contracts | | | | |/clip | | | | |/security | | | |/repositories | | | | |/memory | |/test | | |/com.episo | | | |/contracts | | | | |/clip | | | | |/security | | | |/repositories | | […]

如何在Kotlin Spek测试中组织多个协程和期望块?

我写了一个失败的Spek测试,因为我对涉及多个协程的执行顺序做了一个不正确的假设, it功能如下: given("a test") { runBlocking { print("a") } it("block 1") { runBlocking { print("b") } } runBlocking { print("c") } it("block 2") { runBlocking { print("d") } } } 我希望打印abcd ,但实际上打印。 我应该如何编写这个测试,以便它以可视的方式读取并按照预定的顺序执行?

Kotlin Spek中的组执行顺序是错误的

这是我的测试: object MySpek : Spek({ val myMock1: MyMock1 = mock() val myMock2: MyMock2 = mock() val handler = StartModeHandler(myMock1, myMock2) val session = mock<Session> { on { user }.doReturn(User.builder().withUserId("userId").build()) } describe("item exists for user") { beforeGroup { reset(digitalPointDao, trackDao) } whenever(myMock1.loadItem(session.user.userId)).thenReturn(Optional.of(MyItem())) whenever(myMock2.loadSomething()).thenReturn(ArrayList()) context("method onLaunch was called") { val response = handler.onLaunch(session) it("should return the response […]

测试环境配置:Android + JUnit 5 + Mockito + Spek + Kotlin

我很难配置基于JUnit Jupiter(5)的测试环境。 我有两个不同的错误: WARNING: TestEngine with ID 'spek' failed to discover tests org.junit.platform.commons.util.PreconditionViolationException: Could not load class with name… Exception in thread "main" java.lang.NoSuchMethodError: org.junit.platform.launcher.Launcher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;)V at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:61)… 配置如下。 主build.gradle : apply plugin: 'org.junit.platform.gradle.plugin' buildscript { ext.kotlin_version = '1.1.4-3' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-beta5' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.junit.platform:junit-platform-gradle-plugin:1.0.0" classpath "de.mannodermaus.gradle.plugins:android-junit5:1.0.0" } } […]

Gradle找不到测试

我正在为我的Kotlin项目使用Spek测试框架。 我能够通过Intellij Idea Spek插件运行测试,但不能通过gradle(构建或测试)运行它们。 根据SimpleTest.kt从Idea插件1运行测试成功和1失败,当通过gradle运行它说1容器找到0测试。 如何设置通过gradle启动测试? 我的gradle和测试文件: 的build.gradle: buildscript { ext.kotlin_version = '1.1.4-2' repositories { mavenCentral() jcenter() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.junit.platform:junit-platform-gradle-plugin:1.0.0-M4" } } apply plugin: "idea" apply plugin: "java" apply plugin: "kotlin" apply plugin: "application" apply plugin: "org.junit.platform.gradle.plugin" junitPlatform { filters { engines { include 'spek' } } } mainClassName = "app.MainKt" […]

用Kotlin和Spek创建一个抽象Spek来初始化共享对象

我正在用Kotlin + Spek框架编写单元测试。 到目前为止看起来不错,但我有一个问题,我不得不写很多样板代码,如果我想有一个类我测试的几个Spec对象。 这是我的代码来说明问题: object MyFirstSpec : Spek({ val myMock1: SomeObject1 = mock() val myMock2: SomeObject2 = mock() val myMock3: SomeObject3 = mock() val myMock4: SomeObject4 = mock() val myMock5: SomeObject5 = mock() val myMock6: SomeObject6 = mock() val myClass = MyClassToTest(myMock1, myMock2, myMock3, myMock4, myMock5, myMock6) given("something to test here") { //my test […]

Spek访问内部可见性Kotlin类

我已经整合了一个基于Maven的项目,在Junit 4 Runner中使用Spek进行测试。 我在Codacy中配置了这个项目,并得到了一个有用的建议,要么记录我的公开课,要么降低他们的知名度(很好)。 我发现Kotlin编译器似乎将测试视为存在于不同的模块中,这使得我的项目布局非常难以进行有效的单元测试。 如果类或接口的可见性降低到内部,测试将不会编译。 请建议一个机制来解决这个问题。 在这种情况下是不是可以使用内部可见性修饰符? 有没有一个有用的编译器配置或Spek配置可以解决这个问题? 我认为这个建议确实是正确的。 我不希望将这些课程记录下来,因为它们是内部的,将来可能会改变,或者说文档是不值得的。