Creare dati fake in Java con Instancio

Mattepuffo's logo
Creare dati fake in Java con Instancio

Creare dati fake in Java con Instancio

Instancio è un'ottima libreria per Java che ci permette di valorizzare gli oggetti con dati random, in modo da poter testare le nostre applicazioni senza avere dati reali.

Rispetto ad altre librerie è meno facile da usare, ma ci molte possibilità.

Se usate Maven aggiungete questa dipendenza:

<dependency>
    <groupId>org.instancio</groupId>
    <artifactId>instancio-core</artifactId>
    <version>2.6.0</version>
</dependency>

Prima di tutto dobbiamo creare i nostri oggetti; questo è quello che ho usato io:

import java.util.List;

public class Libro {

    private int id;
    private String titolo;
    private double prezzo;

    private List<String> categorie;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitolo() {
        return titolo;
    }

    public void setTitolo(String titolo) {
        this.titolo = titolo;
    }

    public double getPrezzo() {
        return prezzo;
    }

    public void setPrezzo(double prezzo) {
        this.prezzo = prezzo;
    }

    public List<String> getCategorie() {
        return categorie;
    }

    public void setCategorie(List<String> categorie) {
        this.categorie = categorie;
    }

}

Qui sotto un esempio di codice:

import org.instancio.Instancio;
import java.util.List;
import static org.instancio.Select.field;

public class Main {
    public static void main(String[] args) {
        List<Libro> list = Instancio.ofList(Libro.class).size(5).create();
        for (Libro libro : list) {
            System.out.println(libro.getId() + " - " + libro.getTitolo() + " - " + libro.getPrezzo());
        }

        System.out.println("---------");
        Libro libro = Instancio.of(Libro.class)
                .generate(field("prezzo"), gen -> gen.doubles().range(10.0, 20.5))
                .generate(field("categorie"), gen -> gen.collection().minSize(5).subtype(List.class))
                .create();
        System.out.println(libro.getPrezzo());
        System.out.println(libro.getCategorie());
    }
}

Nella prima parte creiamo una lista, indicando quanti elementi creare.

Nella seconda parte creiamo un solo oggetto, ma impostando alcune customizzazione agli elementi:

  • diciamo che il prezzo deve essere un determinato range
  • diciamo che le categorie devono essere almeno 5

Enjoy!


Condividi

Commentami!