KO
|
EN
gitlite — search
Search
#css
#javascript
#typescript
#html
#react
#html5
#hacktoberfest
#plugin
#css3
#rust
#nextjs
#bootstrap
Kluent
★ 865
Open GitHub ↗
Fluent Assertion-Library for Kotlin
Download README (.md)
Explore Similar Repositories
supabase-schema
:
Secured & Simple Supabase Schema Visualizer
DependencyInjection
:
[Archived] Contains common DI abstractions that ASP.NET Core and Entity Framework Core use. Project moved to https://github.com/aspnet/Extensions
LogcatReader
:
A simple app for viewing logcat logs on an android device.
hexo-theme-arknights
:
明日方舟罗德岛阵营的 Hexo 主题,支持数学公式、Mermaid图表、多种评论系统(Valine、Gitalk、Waline、Artalk、Utterances、Giscus)
django-eventstream
:
Server-Sent Events for Django
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
Kluent
?
Download (.md)
# Kluent [](https://github.com/MarkusAmshove/Kluent/releases) [](https://markusamshove.github.io/Kluent/) [](https://github.com/MarkusAmshove/Kluent/blob/master/AUTHORS.md) [](https://mvnrepository.com/artifact/org.amshove.kluent) [Kluent](https://markusamshove.github.io/Kluent/) is a "Fluent Assertions" library written specifically for Kotlin. It uses the [Infix-Notations](https://kotlinlang.org/docs/reference/functions.html#infix-notation "Infix-Notation") and [Extension Functions](https://kotlinlang.org/docs/reference/extensions.html#extension-functions "Extension Functions") of Kotlin to provide a fluent wrapper around the JUnit-Assertions. [How to contribute](CONTRIBUTING.md) ---------- # Include it via gradle/maven Kluent is hosted [here at mavenCentral](https://mvnrepository.com/artifact/org.amshove.kluent/kluent) Kluent-Android is hosted [here at mavenCentral](https://mvnrepository.com/artifact/org.amshove.kluent/kluent-android) ## Gradle Replace {version} with the current version and chose one of the two artifacts, based on your target platform: ```groovy // Add jcenter as a repository for dependencies repositories { mavenCentral() } dependencies { // for JVM: testImplementation 'org.amshove.kluent:kluent:{version}' // for Android: testImplementation 'org.amshove.kluent:kluent-android:{version}' // To get JUnit errors from kotlin.test, to e.g. enable diff windows in failure messages testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" } ``` ## Maven Replace {version} with the current version ```xml <dependency> <groupId>org.amshove.kluent</groupId> <artifactId>kluent</artifactId> <version>{version}</version> <type>pom</type> </dependency> ``` ---------- # Examples More examples can be seen on the [Site](https://markusamshove.github.io/Kluent/) or in the [tests](https://github.com/MarkusAmshove/Kluent/tree/master/src/test/kotlin/org/amshove/kluent/tests). ### assertEquals ## ```kotlin "hello" shouldBeEqualTo "hello" ``` ### assertNotEquals ## ```kotlin "hello" shouldNotBeEqualTo "world" ``` ### Assert that an Array/Iterable contains something ## ```kotlin val alice = Person("Alice", "Bob") val jon = Person("Jon", "Doe") val list = listOf(alice, jon) list shouldContain jon ``` ## Using backticks Every method that is included in Kluent also has a "backtick version", to make it feel more like a describing sentence. Some examples: ### assertEquals ## ```kotlin "hello" `should be equal to` "hello" ``` ### assertNotEquals ## ```kotlin "hello" `should not be equal to` "world" ``` # Building Kluent All projects of Kluent are built with [Gradle](http://gradle.org/) The default `gradlew build` will only build the `common` and `jvm` module, to keep the build times as small as possible. If you plan to submit a pull request, it is also fine if you just make sure it builds and tests against `common` and `jvm` (which `gradlew build` will make sure of), because the rest of the heavy work will be done by Travis and AppVeyor. That way you can keep your machine free from NodeJS and Kotlin Native :-) To build the Android library, pass the parameter `ANDROID` to Gradle. This will build the `common` and `android` artifacts. To pass the parameter, type: `gradlew build -PANDROID` To also build the JS module, pass `JS`: `gradlew build -PJS` To build native, pass: `gradlew build -PNATIVE` In these cases, the JVM module will also be built, because it is our primary target and everything should pass on the JVM. To skip the JVM build, e.g. for testing only against Native or JS, pass `SKIPVM`: `gradlew build -PJS -PNATIVE -PSKIPJVM` This command will build `common`, `js`, `native`, but not `jvm`. ## Where to put new features If you plan to add a feature (e.g. an Assertion), it would be nice to first try adding it to the `common` module, as it would then be available to all platforms. If it uses specific APIs, like classes from the Java standard library, then it needs to go to the `jvm` module. If you're unsure where to put a feature, or if you want to put something in the `common` module which needs platform specific implementations, you can have a look [here](https://github.com/MarkusAmshove/Kluent/blob/master/common/src/main/kotlin/org/amshove/kluent/Basic.kt) (`platformIsDigit` or `platformClassName`) where a function in the `common` module calls a so called `expect` function, which is defined [here](https://github.com/MarkusAmshove/Kluent/blob/master/common/src/main/kotlin/org/amshove/kluent/internal/Platform.kt) in the `common` module and has specific [JVM](https://github.com/MarkusAmshove/Kluent/blob/master/jvm/src/main/kotlin/org/amshove/kluent/internal/Platform.kt) , [JS](https://github.com/MarkusAmshove/Kluent/blob/master/js/src/main/kotlin/org/amshove/kluent/internal/Platform.kt) and [Native](https://github.com/MarkusAmshove/Kluent/blob/master/native/src/main/kotlin/org/amshove/kluent/internal/Platform.kt) implementation. If you're still unsure how to make something platform independent, we can have a look together inside the PR :-) # Attribution [Parts of the `assertSoftly` feature](https://github.com/MarkusAmshove/Kluent/pull/185#issuecomment-731777949) are based upon the great work of [Kotest](https://github.com/kotest/kotest) under the Apache 2.0 License.