Usage¶
Getting started¶
Assuming you are using MavenCentral already, you just add the following into your projects build.gralde.kts
:
testImplementation("tech.antibytes.kfixture:core:$KFixtureVersion")
Generating Values¶
You initialise the Generator with kotlinFixture()
and you may retrieve atomic values via the fixture
extension:
class MySpec {
private val fixture = kotlinFixture()
@Test
fun myAwesomeTest() {
val value: String = fixture.fixture()
...
}
}
In opposite to JVM libraries, KFixture cannot generate values for arbitrary types due to the nature of KMP. This goes especially for Generics like List or Array. However KFixture has a preset of supported generic types which can accessed like:
class MySpec {
private val fixture = kotlinFixture()
@Test
fun myAwesomeTest() {
val value: List<String> = fixture.listFixture()
...
}
}
or via:
class MySpec {
private val fixture = kotlinFixture()
@Test
fun myAwesomeTest() {
val value: List<String> = fixture.fixture(type = List::class)
...
}
}
Note
Nested Generics are not supported which means things like List<List<String>>
cannot be derived in the default setting.
Setting a Seed¶
KFixture uses Kotlin's Random
implementation to generate the most basic values. The default Random Seed value is set to 0, but you can set a custom value:
class MySpec {
private val fixture = kotlinFixture {
seed = 42
}
...
}
Build-In types¶
Atomics¶
Following types are directly supported by the fixture
extension:
Type |
---|
Any |
Boolean |
Byte |
Char |
Double |
Float |
Int |
Long |
Short |
Unit |
UByte |
UInt |
ULong |
UShort |
Note
Chars will be between (32) and
~
(126).
AtomicArrays¶
Following types are directly supported by the fixture
extension:
Type |
---|
BooleanArray |
ByteArray |
CharArray |
DoubleArray |
FloatArray |
IntArray |
LongArray |
ShortArray |
UByteArray |
UIntArray |
ULongArray |
UShortArray |
String |
Note
It will randomly choose a size between 1 and 10 items. Also an item of an CharArray or String will be a Char between (32) and
~
(126).
Complex Types¶
Iterables¶
Type | Corresponding Extension |
---|---|
Sequence | sequenceFixture |
Array | arrayFixture |
List | listFixture |
MutableList | mutableListFixture |
Set | setFixture |
MutableSet | mutableSetFixture |
Map | mapFixture |
MutableMap | mutableMapFixture |
Others¶
Type | Corresponding Extension |
---|---|
Pair | pairFixture |
Triple | tripleFixture |
Enum | enumFixture |