I want to mock static methods from two different classes. Right now, my code is like this:
try(MockedStatic<ObjectFactory> objectFactory = mockStatic(ObjectFactory.class)){
objectFactory.when(() -> ObjectFactory.getObject(Provider.class)).thenReturn(new Provider());
.....
}
I want to mock another static method call from Context.class
. Is there a way to define a MockedStatic
object of context in the same try block, without using a nested try block.
Without using try block I think we can use something like this
MockedStatic<ObjectFactory> objectFactory = mockStatic(ObjectFactory.class);
MockedStatic<Context> contextMock = mockStatic(Context.class);
......
objectFactory.close();
contextMock.close();
but if the test throws exception, the mocks will not be closed and other tests that use the mock will throw an exception.
The try-with-resources
statement can define multiple AutoCloseable
instances, both of which will be closed at the end:
try (MockedStatic<ObjectFactory> objectFactory = mockStatic(ObjectFactory.class);
MockedStatic<Context> contextMock = mockStatic(Context.class)) {