如何使用 Mockito 在单个 try 块中模拟来自多个 类 的静态方法调用?

How to mock static method calls from multiple classes in a single try block using Mockito?

我想从两个不同的 类 模拟静态方法。现在,我的代码是这样的:

try(MockedStatic<ObjectFactory> objectFactory = mockStatic(ObjectFactory.class)){
    objectFactory.when(() -> ObjectFactory.getObject(Provider.class)).thenReturn(new Provider());
    .....
}

我想模拟来自 Context.class 的另一个静态方法调用。有没有办法在同一个 try 块中定义上下文的 MockedStatic 对象,而不使用嵌套的 try 块。

如果不使用 try 块,我认为我们可以使用类似这样的东西

MockedStatic<ObjectFactory> objectFactory = mockStatic(ObjectFactory.class);
MockedStatic<Context> contextMock = mockStatic(Context.class);
......
objectFactory.close();
contextMock.close();

但是如果测试抛出异常,mocks 将不会关闭,其他使用 mock 的测试将抛出异常。

try-with-resources语句可以定义多个AutoCloseable实例,最后都会关闭:

try (MockedStatic<ObjectFactory> objectFactory = mockStatic(ObjectFactory.class);
     MockedStatic<Context> contextMock = mockStatic(Context.class)) {