Random Framework

Random Framework

Build Status Maven Central

A framework for creating dummy data for POJOs. It can fill a lot of fields with random data, and is even able to recognize some fields that need special values to look pretty.


Getting Started


You need at least Java 1.8 or above to use this library. You can use Maven as a build tool, but Gradle or using plain JARs should work as well.


This library is in Maven Central, so you can easily add it like this:


For other build tools and the JAR take a look at Maven Central or the MVN Repository.

Using the Framework

The new and improved API is really easy to use. To create a simple POJO without much ado, do this:

class MyPerson { 
    private String firstName;
    private Date birthdate;
    // add getters and setters!

RandomFactory<MyPerson> factory = RandomFactory.forClass(MyPerson.class);

// create a single POJO

// create many POJOs
for (final MyPerson person : factory.create(5)) {

If you want to have more control over the generated values, you cann add your own RandomFields like this:

class MyPerson { 
    private String firstName;
    private Date burzeltag;
    // add getters and setters!

RandomFactory<MyPojo> factory = RandomFactory.forClass(MyPerson.class);
factory.addRandomField("firstName", new FirstNameRandomField().gender(Gender.MALE));
factory.addRandomField("burzeltag", new BirthdayRandomField());


And finally, to create a hierarchical structure of POJOs, use the RandomIndustrialArea like this:

class MyPerson { 
    private MyPersonsAddress address;
    // add getter and setter!
class MyPersonsAddress { 
    private String city;
    // add getter and setter!

RandomIndustrialArea factory = RandomIndustrialArea.forClasses(MyPerson.class, MyPersonsAddress.class);

for (final MyPerson person : factory.create(MyPerson.class, 5)) {

Even more examples are located here. To see all types have a look at the package "types" or the JavaDoc.


Version Changes
2.1.0 new fields
2.0.2 fixed file access
2.0.1 Made pom.xml pretty
2.0.0 streamlined the API and documentation; moved to Maven Central
1.0.0 internal version with basic API


The following classes and semantic fields are supported.

  • arrays
  • BigDecimal
  • BigInteger
  • Boolean
  • Calendar
  • Character and char
  • Collection (including List, Set and Queue
  • Date (and "birthdays", which have another range)
  • Double and double
  • Enum
  • Float and float
  • Integer and int
  • LocalDateTime
  • LocalDate
  • LocalTime
  • Long and long
  • Short and short
  • some special Strings
    • cities
    • first names
    • last names
    • patterns (i.e. combination of all other fields)
    • postal codes
    • streets (with house number)
    • word (random letters)
    • words (random letters with spaces, dots and paragraphs between them)

If something is missing, request it via a new issue.

Developer Manual

How to Release?

The release process is basically as defined in this guide:

  • Pre-Release Steps
    1. Check TODOs and FIXMEs: Create issues for the next milestone(s) or fix them
    2. Update documentation via mvn clean verify -Pdoc or the Eclipse launch config "Create Doc.launch"
    3. Commit documentation
    4. Update README.md with the planned version:
      • Getting Started > Installing - change Maven version
      • Versions - add new milestone / version here
  • Release
    1. mvn clean release:prepare -DreleaseVersion=2.1.0 -DdevelopmentVersion=2.2.0-SNAPSHOT -DscmCommentPrefix="[#26] " -B
    2. mvn release:perform
    3. git push origin -–tags
    4. git push origin master
  • Post-Release Steps
    1. Check that the project got released to Sonatype

How to Create a New Random Field?

Create new implementation of RandomField in de.slothsoft.random.types. To test this implementation, you can (should) use:

  • RandomFactoryTest - to test that the basic setup of setting a property of a POJO works
  • AbstractRandomFieldTest - to test that the interface is correctly implemented

Also it should be added to the Features section of this README.


This project is licensed under the MIT License - see the MIT license for details.

Leave a Reply