JUnit jupiter extension for Mockito construction and static mocking.
<dependency>
<groupId>io.github.boolivar</groupId>
<artifactId>mockito-inline-extension</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
testImplementation "io.github.boolivar:mockito-inline-extension:1.0.0"
Mockito:
class FooTest {
@Test
void testFoo() {
try (MockedConstruction mocked = mockConstruction(Foo.class)) {
Foo foo = new Foo();
when(foo.method()).thenReturn("bar");
assertEquals("bar", foo.method());
verify(foo).method();
}
}
}
MockitoInlineExtension:
@ExtendWith(MockitoInlineExtension.class)
class FooTest {
@ConstructionMock(Foo.class)
@Test
void testFoo() {
Foo foo = new Foo();
when(foo.method()).thenReturn("bar");
assertEquals("bar", foo.method());
verify(foo).method();
}
}
@ConstructionMock
supports list of classes to mock for single test. Test method can accept arguments of type MockedConstruction
parameterized by mocked type:
@ConstructionMock({Foo.class, Bar.class})
@Test
void testFooBar(MockedConstruction<Foo> mockedFoo, MockedConstruction<Bar> mockedBar) {
}
Optional mock initialization method can be provided with the same name as test, accepting actual mock and MockedConstruction.Context
arguments:
void testFooBar(Foo mock, MockedConstruction.Context context) {
}
void testFooBar(Bar mock, MockedConstruction.Context context) {
}
Mockito:
class FooTest {
@Test
void testFoo() {
try (MockedStatic mocked = mockStatic(Foo.class)) {
mocked.when(Foo::method).thenReturn("bar");
assertEquals("bar", Foo.method());
mocked.verify(Foo::method);
}
}
}
MockitoInlineExtension:
@ExtendWith(MockitoInlineExtension.class)
class FooTest {
@StaticMock(Foo.class)
@Test
void testFoo(MockedStatic<Foo> mocked) {
mocked.when(Foo::method).thenReturn("bar");
assertEquals("bar", Foo.method());
mocked.verify(Foo::method);
}
}