/java-random

Primary LanguageJavaMIT LicenseMIT

Advanced Random Test Data Utils

Project Documentation

System Status
Dependency Maven Central

This modules aims to provide a universal mechanism to create random test dummies of java objects.

Usage

Maven Dependency (Latest Version in pom.xml):

<dependency>
	<groupId>com.namics.oss</groupId>
	<artifactId>java-random</artifactId>
	<version>1.2.3</version>
</dependency>

Maven Central

Requirements

Minumum Java Version

  • Java: JDK 8

Java 9 Notes

  • Module is not prepared for java 9 yet.
  • Due to heavy use of reflection in this lib it might not be that simple to adopt java 9

Create random values

Basic values

The com.namics.commons.random.RandomData util provides a lot of convenience methods to create basic random values.

Java beans and advanced types

Use the generic method com.namics.commons.random.RandomData.random(Class<?> type) to create random instance of the object.

This works for types with available generators

Integer random = RandomData.random(Integer.class);

But also for Java beans:

 public class Demo {
 	public static class Person{
 		private String name;
 		public String getName() {return name;}
 		public void setName(String name) {this.name = name;}
 	}
 
 	@Test
 	public void simplePerson() throws Exception {
 		Person person = RandomData.random(Person.class);
 		System.out.println(person.getName()); // Leonel Bowers
 	}
 } 

This requires a registered instance of com.namics.commons.random.generator.RandomGenerator<SupportedType> for the requested type. There is a basic list of generators registered by default to support most basic type. See basic generators for complete list.

There is a basic support for Collections.

Register custom generators RandomGenerator<SupportedType>

There are several ways to register custom RandomGenerator<SupportedType>s:

  • auto discovery:
    • place RandomGenerator<SupportedType> in same package as type to be generated
    • add custom scan package RandomData.addRandomGenerators(String scanpackage )
  • explicit registration:
    • Register generator class RandomData.addRandomGenerator(Class<? extends RandomGenerator> generatorClass )
    • Register generator instance RandomData.addRandomGenerator(RandomGenerator generator)
    • Ein zu scannendes Package registrieren:

Accented chars in random names

You may enable international names by setting either

  • system property "random.names.international" to "true"
  • environment variable "RANDOM_NAMES_INTERNATIONAL" to "true"

if not enabled, only names without accents are used.