如何使用 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)) {
我想从两个不同的 类 模拟静态方法。现在,我的代码是这样的:
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)) {