Class InstancioExtension

java.lang.Object
org.instancio.junit.InstancioExtension
All Implemented Interfaces:
org.junit.jupiter.api.extension.AfterAllCallback, org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.AfterTestExecutionCallback, org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.Extension, org.junit.jupiter.api.extension.ParameterResolver

public class InstancioExtension extends Object implements org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.AfterAllCallback, org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.AfterTestExecutionCallback, org.junit.jupiter.api.extension.ParameterResolver
The Instancio JUnit extension adds support for additional features when using Instancio with JUnit Jupiter:
  • reporting the seed value to allow reproducing failed tests
  • injecting Settings using @WithSettings annotation
  • generating parameterized test arguments using @InstancioSource
  • injecting fields and method parameters using @Given aannotation

Reproducing failed tests

The extension generates a seed for each test method. When a test fails, the extension reports this seed in the output. Using the @Seed annotation, the test can be re-run with the reported seed to reproduce the data that caused the failure.

For example, given the following test class:


 @ExtendWith(InstancioExtension.class)
 class ExampleTest {

     @Test
     void verifyPerson() {
         Person person = Instancio.create(Person.class);
         // some test code...
         // ... some assertion fails
     }
 }
 

The failed test will report the seed value that was used, for example:

"Test method 'verifyPerson' failed with seed: 12345"

Subsequently, the failing test can be reproduced by annotating the test method with the Seed annotation:


 @Test
 @Seed(12345) // will reproduce previously generated data
 void verifyPerson() {
     Person person = Instancio.create(Person.class);
     // snip...
 }
 

See the user guide for more details.

Since:
1.1.0