Skip to content

A small library of classes for generating random values in a way that can be easily tested

License

Notifications You must be signed in to change notification settings

michaelruocco/random-value-suppliers

Repository files navigation

Library Template

Build codecov Codacy Badge BCH compliance Quality Gate Status Technical Debt Coverage Lines of Code Maven Central License: MIT

Overview

This library contains some small utilities for generating random values in a testable way.

UUIDs

If you need to generate a UUID value you can of course just call UUID.randomUUID() and this works fine. However, when you are testing you cannot easily determine what the value will be. This library aims to help with that by providing the UuidGenerator interface, in normal execution the RandomUuidGenerator can be used to provide a random UUID, this is ultimately just calls UUID.randomUUID(). when testing you can use NonRandomUuidGenerator instead, by default it will cycle around 5 fixed UUID values each time it is called, if you require more than 5 distinct values you can pass in your own list of fixed UUID values instead if you wish.

Numeric Strings

For generic string values a similar NumericStringGenerator interface has been created, the generate method takes a single argument which determines the length of the numeric string to be returned. If you do not need to vary the length of the string value you can wrap the generated inside the FixedLengthNumericStringGenerator class. There are two implementations of NumericStringGenerator the first is RandomNumericStringGenerator which unsurprisingly will generate a string containing random digits of the specified length. When testing you can use IncrementingNumericStringGenerator this will return predictable results by returning an incrementing value starting from 1. So if you pass a length of 5, the first 3 calls would return "00001", "00002", "00003".

Examples

The unit tests for each of the classes listed above demonstrate each of the classes above and how they can be used.

Useful Commands

// cleans build directories
// prints currentVersion
// formats code
// builds code
// runs tests
// checks for gradle issues
// checks dependency versions
./gradlew clean currentVersion dependencyUpdates lintGradle spotlessApply build

About

A small library of classes for generating random values in a way that can be easily tested

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages