如何使用powermockito模拟文件数组?

toe95027  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(605)

我有下面的 static 方法,我正在尝试使用powermockito对其进行模拟。

Ln 1  public static method getConfigs(){
   2
   3  File[] files = new File(/tmp/dir/).listFiles();
   4   if (null == files) {
   5    return Collections.emptyMap();
   6   }
   7   return getData();
      }

在我的测试课上:

@RunWith(PowerMockRunner.class)
@PrepareForTest(Configs.class)  
public class ConfigsTest {

@InjectMocks
Configs configs;

@Test
public void testGetConfigs() throws Exception {

  PowerMockito.mockStatic(Configs.class);
  Map<String, Object> map = new HashMap<>();
  map.put("data", "data");

  File file = PowerMockito.mock(File.class);
  File[] files = new File[] { new File("file") };

  PowerMockito.when(file.listFiles()).thenReturn(files);
  PowerMockito.when(configs.getDataMap()).thenReturn(map);

  Map data = secrets.getDataMap();
  Assert.assertNotNull(data);
}

现在,问题是测试在if条件下失败,第4行。我尝试了几种方法来模拟测试并为测试添加值 file 在空检查中使用的对象。我需要我的测试覆盖超过if条件,以满足声纳覆盖范围。请让我知道我如何才能做到这一点。

5ktev3wc

5ktev3wc1#

我想应该是这样

PowerMockito.mockStatic(Configs.class);
PowerMockito.when(Configs.getConfigs()).thenReturn(map);

powermock静态

相关问题