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.

  • BigDecimal
  • BigInteger
  • Boolean
  • Calendar
  • Character and char
  • Date (and "birthdays", which have another range)
  • Double and double
  • Float and float
  • Integer and int
  • LocalDateTime
  • LocalDate
  • LocalTime
  • Long and long
  • Short and short
  • some special Strings
    • cities
    • first names
    • last names
    • 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.

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][#features] section of this README.


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

Leave a Reply