为什么在模拟后返回对象时会出现 NullPointerException?

Why do I get a NullPointerException when returning an object after mocking?

在模拟我的 File class 之后,返回的对象总是 null。为什么?

PowerMockito.whenNew(File.class).withArguments(String.class).thenReturn(configFile);

configFile 是一个 File,在测试函数中是这样创建的:

@Test
public void loadJSONConfigFileTest() throws Exception {
   final File configFile = folder.newFile("config.json");
}

不是null。应该得到返回的代码 configFile:

final File configFile = new File(pathFile);

由于带参数的 File.class 被模拟,当执行此行时,返回 configFile 。但它是 null.

您使用的 withArguments 不正确。它不期待 class,它期待实际实例。

试试这个:

PowerMockito.whenNew(File.class)
      .withArguments(Mockito.anyString())
      .thenReturn(configFile);

参见:Mockito.anyString()