如何为读取文件并提供字节内容的方法编写Junit测试用例?

时间:2016-04-21 12:06:15

标签: java unit-testing junit mockito

我正在尝试为一个简单的方法编写Junit,该方法将文件名作为输入并返回字节数组作为输出。我遇到的困难是运行Junit时文件将无法使用。那么,我该如何测试这种方法呢? 我看到两个选择:

  • 以某种方式使文件可用于Junit(我不确定这是否可行)。
  • 模拟/存根行为。

我正在粘贴以下方法的代码:

public byte[] readFileAndReturnBytes(String filePath) throws IOException {
    InputStream is = null;
    File file = null;
    byte[] fileBytes = null;
    try
    {
        file = new File(filePath);
        is = new FileInputStream(file);
        fileBytes = IOUtils.toByteArray(is);
    }
    catch(IOException e){
        throw e;
    }
    finally{
        if(is != null)
        {
            is.close();
            file = null;
        }
    }
    return fileBytes;
}

我正在使用Mockito进行嘲弄。有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

对我来说,这里最好的选择是重构您的方法,使其收到File而不是String filePath。在这种情况下,您可以模拟文件并调用方法readFileAndReturnBytes(mockedFile)

File mockedFile = mock(File.class);
testClass.readFileAndReturnBytes(mockedFile);

如果您不想重构代码,建议您查看JUnit TempopratyFolder