Forgery

Forgery is a Java library for filling graphs of POJOs with realistic dummy data

Лицензия

Лицензия

Группа

Группа

uk.co.adaptivelogic
Идентификатор

Идентификатор

forgery
Последняя версия

Последняя версия

0.2.0
Дата

Дата

Тип

Тип

jar
Описание

Описание

Forgery
Forgery is a Java library for filling graphs of POJOs with realistic dummy data
Ссылка на сайт

Ссылка на сайт

https://github.com/adaptive-logic/forgery/
Организация-разработчик

Организация-разработчик

Adaptive Logic Consulting Ltd
Система контроля версий

Система контроля версий

https://github.com/adaptive-logic/forgery

Скачать forgery

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/uk.co.adaptivelogic/forgery/ -->
<dependency>
    <groupId>uk.co.adaptivelogic</groupId>
    <artifactId>forgery</artifactId>
    <version>0.2.0</version>
</dependency>
// https://jarcasting.com/artifacts/uk.co.adaptivelogic/forgery/
implementation 'uk.co.adaptivelogic:forgery:0.2.0'
// https://jarcasting.com/artifacts/uk.co.adaptivelogic/forgery/
implementation ("uk.co.adaptivelogic:forgery:0.2.0")
'uk.co.adaptivelogic:forgery:jar:0.2.0'
<dependency org="uk.co.adaptivelogic" name="forgery" rev="0.2.0">
  <artifact name="forgery" type="jar" />
</dependency>
@Grapes(
@Grab(group='uk.co.adaptivelogic', module='forgery', version='0.2.0')
)
libraryDependencies += "uk.co.adaptivelogic" % "forgery" % "0.2.0"
[uk.co.adaptivelogic/forgery "0.2.0"]

Зависимости

compile (6)

Идентификатор библиотеки Тип Версия
com.google.guava : guava jar 17.0
com.google.code.findbugs : jsr305 jar 2.0.3
org.slf4j : slf4j-api jar 1.7.7
commons-lang : commons-lang jar 2.6
com.google.inject : guice jar 3.0
javax.inject : javax.inject jar 1

test (3)

Идентификатор библиотеки Тип Версия
junit : junit jar 4.11
ch.qos.logback : logback-classic jar 1.0.13
org.mockito : mockito-all jar 1.9.5

Модули Проекта

Данный проект не имеет модулей.

Forgery Build Status

Forgery is a simple Java library for filling graphs of POJOs with realistic dummy data. Forgery uses JSR 330 (javax.inject) behind the scenes to provide data, which makes it very simple to extend.

Usage

Forgery comes with a bunch of default javax.inject.Providers to cover common business domain objects. To create an instance of Forgery, just build like so:

Forgery forgery = new Forgery.Builder().build();

Now you're ready to start forging your domain objects:

Employee employee = forgery.get(Employee.class);
employee.getFirstName(); // "John"
employee.getLastName(); // "Smith"
employee.getDateOfBirth(); // 11-Jan-1966

Extending Forgery

You can extend Forgery in two ways. Firstly, add a new Provider instance or Class<? extends Provider> to the builder directly, like so:

Forgery forgery = new Forgery.Builder()
                             .addForger(new CustomProvider())
                             .addForger(NameProvider.class)
                             .build();

Alternatively, you can add your Provider classes to the following file in any JAR on your classpath using the Java SE ServiceLoader utility:

META-INF/services/javax.inject.Provider

The contents of the file should look like so:

uk.co.adaptivelogic.forgery.forger.RandomDateProvider
uk.co.adaptivelogic.forgery.forger.RandomDateOfBirthProvider
uk.co.adaptivelogic.forgery.forger.RandomDoubleProvider
org.example.SpecificDomainProvider

ServiceLoader will instantiate each class using a no-args constructor, so this will only work for very simple self-contained providers.

Creating a Provider

Step 1: Implement the Provider Interface

Creating a new Provider is pretty simple. Just implement javax.inject.Provider<T> to return an instance of T like so:

public class FirstNameProvider implements Provider<String> {
    public String get() {
       return "Bob";
    }
}

Step 2: Annotate to Match Properties

The next step is to annotate your class with the @Property annotation to tell Forgery what properties to inject against.

@Property("firstName")
public class FirstNameProvider implements Provider<String> {
    public String get() {
       return "Bob";
    }
}

The @Property annotation can take multiple property names:

@Property({"firstName", "foreName"})

Step 3: Use Injection to Compose Providers

If your Provider is a composite of different types, you can reuse existing Providers through dependency injection, like so:

@Property("name")
public class NameProvider implements Provider<String> {
    private Provider<String> firstName;
    private Provider<String> lastName;

    public NameProvider(@Named("firstName") Provider<String> firstName, @Named("lastName") Provider<String> lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
    
    public String get() {
        return firstName.get() + " " + lastName.get();
    }
}

Note: you can currently only take advantage of dependency injection by registering your Provider class with the builder. Registering an instance will not work; neither will using the ServiceLoader mechanism described above.

Building with Forgery

Forgery is available from Maven Central. Here's the dependency you'll need for Maven, but Forgery can also be used as a dependency in Ivy, Buildr and Gradle (Java), Grape (Groovy), SBT (Scala) and Leiningen (Clojure):

<dependency>
  <groupId>uk.co.adaptivelogic</groupId>
  <artifactId>forgery</artifactId>
  <version>0.2.0</version>
  <scope>test</scope>
</dependency>

Версии библиотеки

Версия
0.2.0
0.1.0