Random Framework
- Author: Stef Schulz
- Repository: https://github.com/slothsoft/framework-random
- Open Issues: https://github.com/slothsoft/framework-random/issues
- Wiki: none
- Developer Resources: JavaDoc, Executed Tests, Code Coverage
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.
Content:
Getting Started
Prerequisites
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.
Installing
This library is in Maven Central, so you can easily add it like this:
<dependency>
<groupId>de.slothsoft.random</groupId>
<artifactId>random</artifactId>
<version>2.1.0</version>
</dependency>
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
System.out.println(factory.createSingle());
// create many POJOs
for (final MyPerson person : factory.create(5)) {
System.out.println(person);
}
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());
System.out.println(factory.createSingle());
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)) {
System.out.println(person);
}
Even more examples are located here. To see all types have a look at the package "types" or the JavaDoc.
Versions
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 |
Features
The following classes and semantic fields are supported.
- arrays
BigDecimal
BigInteger
Boolean
Calendar
Character
andchar
Collection
(includingList
,Set
andQueue
Date
(and "birthdays", which have another range)Double
anddouble
Enum
Float
andfloat
Integer
andint
LocalDateTime
LocalDate
LocalTime
Long
andlong
Short
andshort
- 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
- Check TODOs and FIXMEs: Create issues for the next milestone(s) or fix them
- Update documentation via
mvn clean verify -Pdoc
or the Eclipse launch config "Create Doc.launch" - Commit documentation
- Update README.md with the planned version:
- Getting Started > Installing - change Maven version
- Versions - add new milestone / version here
- Release
mvn clean release:prepare -DreleaseVersion=2.1.0 -DdevelopmentVersion=2.2.0-SNAPSHOT -DscmCommentPrefix="[#26] " -B
mvn release:perform
git push origin -–tags
git push origin master
- Post-Release Steps
- 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 worksAbstractRandomFieldTest
- to test that the interface is correctly implemented
Also it should be added to the Features section of this README.
License
This project is licensed under the MIT License - see the MIT license for details.