如何使用 spring 依赖注入模拟包的 util class 的静态方法

How to mock a static method of util class of a package using spring dependency injection

我有一个使用 spring 依赖注入的包,它使用以下代码进行单元测试。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "<xml_location>" })
@WebAppConfiguration

我需要在 util class 中添加一个静态方法,并且需要模拟它以防止现有的单元测试失败。我尝试使用 PowerMock,但遇到了如下不同的错误。

<class_name> not prepared for test.
org.powermock.api.mockito.ClassNotPreparedException
Failed to load ApplicationContext

有人可以指出一个以前做过的例子吗?

您可以为此使用 Mockito。在最新版本中,它有 Mockito.mockStatic() 方法。 这是一个例子

@Test
public void staticTest() {
    MockedStatic<GoogleDriveHelper> staticMock = Mockito.mockStatic(GoogleDriveHelper.class);
    staticMock.when(() -> GoogleDriveHelper.fixFileNameExtension(anyString(), anyString())).thenReturn("Blablabla");
    assertEquals("Blablabla", GoogleDriveHelper.fixFileNameExtension("abc", "bcd"));
}