Generate realistically-looking fake data for Kotlin, Android, Java and JVM
Use kotlin-faker during development and testing to ensure your application data looks as if it was real, just like this really fake logo, but not quite so.Kotlin-faker is a kotlin port of a popular ruby faker gem.
kotlin-faker: the ultimate fake data generation library for development and testing
Kotlin-faker is a comprehensive data-generation library for the JVM. It is most suitable for development, testing, and data anonymization purposes, and can be used with Kotlin, Java, Android, Scala, and other JVM-based projects. Kotlin-faker provides realistic-looking, fake data generation capabilities in various domains like names, addresses, internet, banking, books, games, and many more.
In fact, kotlin-faker is so good at generating fake data, it almost fooled us into thinking it was real! 🤯 From names that sound like they belong to secret agents 🕴️, to addresses where superheroes 🦸♂️ and villains 🦹 might live.
- Faker libraries depend on java 8 and kotlin 1.9.x for runtime
- Building faker from source requires 3 jdk distributions: jdk 8 (temurin is recommended, but any vendor should work), jdk 11 (for
docs
module) and jdk 17 (graalvm-ce distribution, forcli-bot
module). See CONTRIBUTING for more details.
Latest releases are always available on maven central.
dependencies {
implementation 'io.github.serpro69:kotlin-faker:$version'
}
<dependencies>
<dependency>
<groupId>io.github.serpro69</groupId>
<artifactId>kotlin-faker</artifactId>
<version>${version}</version>
</dependency>
</dependencies>
Snapshots are also available using the following repository: https://oss.sonatype.org/content/repositories/snapshots/
With gradle
repositories {
maven {
url = 'https://oss.sonatype.org/content/repositories/snapshots/'
}
}
With maven
<repositories>
<repository>
<id>sonatype-snapshot</id>
<name>Sonatype Snapshot</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
</repositories>
Kotlin-faker provides a Bill-of-Materials that simplifies dependency management.
See bom/README.md for more details.
Extra fakers covering a wide range of domains are available as separate dependencies. See faker submodules in this repo for more details about each faker.
Faker provides extensions for some third-party testing libraries. See extension submodules in this repo for more details about each extension.
Full usage documentation for kotlin-faker is available at serpro69.github.io/kotlin-faker/.
NB! The documentation website is currently not versioned and always reflects master
rather than the last stable version.
Warning
kotlin-faker 2.0 is coming, which, apart from new features, also means breaking changes.
More details on currently added breaking changes and migration can be found in #220
val faker = faker { }
faker.name.firstName() // => Ana
faker.address.city() // => New York
Command line application can be used for a quick lookup of faker functions. See faker-bot README for installation and usage details.
To run unit tests: ./gradlew clean test
To run integration tests: ./gradlew clean integrationTest
To deploy to OSS Sonatype repo:
- set the following properties in
~/.gradle/gradle.properties
signing.keyId=<key_id>
signing.password=<key_passphrase>
signing.secretKeyRingFile=/home/user/.gnupg/secring.gpg
sonatypeUsername=<oss_user_token>
sonatypePassword=<oss_password_token>
stagingProfileId=<oss_staging_profile_id>
- running
publishFakerCorePublicationToSonatypeRepository
will publish the artifacts to either staging release repo or to snapshots repo, depending on the current version
Versions need to be bumped manually through a tag with the next release version that has to follow the semver rules, and the tag has to be pushed to origin.
Creating the tag can be either done manually with git tag
or by using gradlew tag
task.
To create a new pre-release version (new release candidate)
the following can be used: ./gradlew clean tag -Prelease -PnewPreRelease -PbumpComponent={comp}
, where comp
can be
one of the following values: major
, minor
, or patch
.
To bump an existing pre-release to the next version (next release candidate for the same release version)
the following can be used: ./gradlew clean tag -Prelease -PpreRelease
.
To promote a pre-release to a release version the following can be used:
./gradlew clean tag -Prelease -PpromoteToRelease
,
To create a new release version the following can be used:
./gradlew clean tag -Prelease -PbumpComponent={comp}
, where comp
can be one of the following values: major
, minor
, or patch
.
Alternatively to the above targets from Makefile can be used for the same purposes.
The CONTRIBUTING guidelines should help in getting you started on how to contribute to this project.
Many thanks to these awesome tools that help us in creating open-source software:
This code is free to use under the terms of the MIT license. See LICENSE.