Package org.instancio

Annotation Type InstancioMetamodel


  • @Target(TYPE)
    @Retention(SOURCE)
    public @interface InstancioMetamodel
    This annotation provides support for generating metamodels for classes in order to avoid referencing fields as literal strings.

    For example, instead of:

    
     Person person = Instancio.of(Person.class)
         .supply(field(Address.class, "city"), () -> "Paris")
         .create();
     

    you would write:

    
     Person person = Instancio.of(Person.class)
         .supply(Address_.city, () -> "Paris")
         .create();
     

    Metamodels can be generated by placing @InstancioMetamodel annotation on a class, for instance a JUnit test class, and activating the Instancio annotation processor in your build (see documentation for Maven and Gradle examples).

    
     @InstancioMetamodel(classes = {Address.class, Person.class})
     class PersonTest {
         // ... snip
     }
     

    Note: if you need the same metamodels in multiple test classes, it is recommended to create a separate class containing the @InstancioMetamodel annotation, for example:

    
     @InstancioMetamodel(classes = {Address.class, Person.class})
     interface SampleConfig { /* empty */ }
     

    The reason for this is that duplicating the annotation for the same 'classes' will cause metamodels for those classes to be generated more than once.

    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      Class<?>[] classes
      Classes for which metamodel should be generated.
    • Element Detail

      • classes

        Class<?>[] classes
        Classes for which metamodel should be generated.
        Returns:
        classes to generate metamodels for
        Default:
        {}