KotlinUnitTesting
Kotlin Unit Testing Examples
Install / Use
/learn @rozkminiacz/KotlinUnitTestingREADME
:gradle: 4.10.2 :junit: 4.12 :jupiter: 5.3.1 :kotlintest: 3.1.10 :mockk: 1.8.12 :spek: 2.0.0-rc.1 :mockito: 2.23.0 :strikt: 0.17.0 :mockito_kotlin: 2.0.0-RC1
:toc:
= Kotlin Unit Testing Examples https://github.com/rozkminiacz/KotlinUnitTesting v1.0, 2018-27-07 :imagesdir: assets/images :homepage: http://asciidoctor.org
This repository contains examples of basic unit tests written in Kotlin. In specific directories you can find gradle buildscript with needed dependencies and configuration, simple unit test and parameterized test.
All sample projects was verified under Gradle {gradle} and Intellij IDEA 2018.2.4
== Application
UseCase which provides empty string - to showcase structure of test
methods
DistanceConverter - converts meters to kilometers in parameterized
tests
MVP - Model-View-Presenter contract
== Gradle, Kotlin & Groovy
This Gradle project is by default configured with https://github.com/gradle/kotlin-dsl[Gradle's Kotlin DSL]
The equivalent Groovy build are still available for you copy&pasting
pleasures, they have been renamed as build.gradle.groovy
You can switch between Groovy and Kotlin by running the script
$ ./toggle-kotlin-groovy.sh
== Junit4
https://junit.org/junit4/
Attach to project
[source,groovy,subs="attributes+"]
dependencies{ testCompile group: 'junit', name: 'junit', version: '{junit}' }
== Junit5
https://junit.org/junit5/
Attach to project
[source,groovy,subs="attributes+"]
dependencies { testCompile('org.junit.jupiter:junit-jupiter-api:{jupiter}') testCompile('org.junit.jupiter:junit-jupiter-params:{jupiter}') testRuntime('org.junit.jupiter:junit-jupiter-engine:{jupiter}') }
test { useJUnitPlatform() testLogging { events "passed", "skipped", "failed" } }
== KotlinTest
https://github.com/kotlintest/kotlintest
Attach to project
[source,groovy,subs="attributes+"]
dependencies{ testCompile 'io.kotlintest:kotlintest-runner-junit5:{kotlintest}' }
== Spek
https://spekframework.org version 2.x
Attach to project
[source,groovy,subs="attributes+"]
repositories { mavenCentral() maven { url "https://dl.bintray.com/spekframework/spek-dev" }
}
test { useJUnitPlatform { includeEngines 'spek2' } }
dependencies { testImplementation ('org.spekframework.spek2:spek-dsl-jvm:{spek}') { exclude group: 'org.jetbrains.kotlin' } testRuntimeOnly ('org.spekframework.spek2:spek-runner-junit5:{spek}') { exclude group: 'org.junit.platform' exclude group: 'org.jetbrains.kotlin' }
testCompile('org.junit.jupiter:junit-jupiter-api:{jupiter}')
// spek requires kotlin-reflect, can be omitted if already in the classpath
testRuntimeOnly "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
}
For Spek you may also need additional Intellij or Android Studio https://plugins.jetbrains.com/plugin/10915-spek-framework[plugin]
== Mockito
https://site.mockito.org
Add to project
[source,groovy,subs="attributes+"]
repositories { mavenCentral() jcenter() }
dependencies { testCompile "org.mockito:mockito-core:{mockito}"
testCompile group: 'junit', name: 'junit', version: '{junit}'
}
== Mockito-Kotlin
https://github.com/nhaarman/mockito-kotlin
Add to project
[source,groovy,subs="attributes+"]
repositories { mavenCentral() jcenter() }
dependencies { testCompile "org.mockito:mockito-core:{mockito}" testCompile "com.nhaarman.mockitokotlin2:mockito-kotlin:{mockito_kotlin}"
testCompile group: 'junit', name: 'junit', version: '{junit}'
}
== Mockk
https://github.com/mockk/mockk
Add to project
[source,groovy,subs="attributes+"]
dependencies { testCompile group: 'junit', name: 'junit', version: '{junit}' testImplementation "io.mockk:mockk:{mockk}" }
== Strikt
https://strikt.io
Add to project
[source,groovy,subs="attributes+"]
dependencies { testImplementation("io.strikt:strikt-core:{strikt}") }
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
