https://github.com/christophsturm/randolf
Autogenerated data for your tests
https://github.com/christophsturm/randolf
kotlin tdd test test-driven-development testing testing-tools
Last synced: 5 months ago
JSON representation
Autogenerated data for your tests
- Host: GitHub
- URL: https://github.com/christophsturm/randolf
- Owner: christophsturm
- License: mit
- Created: 2018-12-12T09:49:10.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-12-15T14:34:51.000Z (over 2 years ago)
- Last Synced: 2023-12-15T15:44:54.312Z (over 2 years ago)
- Topics: kotlin, tdd, test, test-driven-development, testing, testing-tools
- Language: Kotlin
- Homepage:
- Size: 177 KB
- Stars: 5
- Watchers: 1
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Randolf the rand nosed randeer
Autogenerated data for your tests.
This is how it looks in action:
```
enum class BeanType { ROBUSTA, ARABICA }
data class Group(val name: String)
data class User(
val firstName: String,
val name: String,
val age: Int,
val lat: Double,
val lon: Double,
val isBoss: Boolean,
val teamSize: Short,
val flags: Byte,
val shortName: Char,
val efficiency: Float,
val favoriteCoffee: BeanType,
val groups: List
)
print(Randolf().create())
//=> User(firstName=QV muCLbUVfVheboeSuN, name=MSdOzpRCFIykprACOHjv, age=2116525025, lat=0.9518687079417872, lon=0.8331958938906572, isBoss=false, teamSize=4310, flags=83, shortName=Z, efficiency=0.76879007, favoriteCoffee=ARABICA, groups=[Group(name=TpiFXUrucFA cMARKLiR), Group(name=floFeNep XBEZUfXwQgL)])
```
# Usage:
Add this to your Gradle dependencies:
```
implementation("com.christophsturm:randolf:0.2.2")
```
You can create any Kotlin data class like in the example above. All fields will be set to random values, even nullable
fields. You can choose to set only necessary fields by calling `Randolf.create(RandolfConfig(minimal=true))` instead.
This will set all nullable fields to null, numbers to 0 and make strings, lists and maps empty. For more usage examples
take a look at the [unit tests](src/test/kotlin/randolf/RandolfTest.kt).
Supported types:
* String
* Int
* Long
* Double
* Short
* Float
* Byte
* Boolean
* Char
* Enums
* List
* Set
* Collection
* Map
# Configuration
If you want to change defaults or support more types, you can pass a [RandolfConfig](src/main/kotlin/randolf/RandolfConfig.kt) to the Randolf constructor.
Here is a config that returns now for `Instant`:
```
RandolfConfig(additionalValueCreators = mapOf(Instant::class to { _, _ -> Instant.now() }))
```
You can override supported types, and use the name and type of the field:
```
RandolfConfig(additionalValueCreators = mapOf(String::class to { type: KType, name: String ->
"field $name of type $type"
}))
```
You can also inject a random generator for example to set the seed:
```
RandolfConfig(random = Random(1234))
```
Next steps:
* add an optional non-random mode inspired by [Fakir](https://github.com/dmcg/fakir)
* build for Kotlin/JS and Kotlin/Native.