JUnit强制BufferedReader抛出IOException

时间:2015-09-03 11:59:31

标签: java junit

我有以下方法

    public static String readPostParams(Request request, String param) {

    BufferedReader br = new BufferedReader(new InputStreamReader(request.getBodyAsStream()));
    String line;

    try {
        while ((line = br.readLine()) != null) {
            if (line.contains(param)) {
                //System.out.println("---> " + param + " :" + getValue(line));
                return getValue(line);
            }
        }
    } catch (IOException ex) {
        // Ignore
    }
    return "";
}

我想要一个JUnit Unit测试来强制BufferedReader抛出IOException,所以我也可以覆盖那个部分。

2 个答案:

答案 0 :(得分:0)

如果要为 IOException 测试此方法,则应通过删除try catch块并将throws子句添加到方法中,将异常传播到调用方法:

    public static String readPostParams(Request request, String param) throws IOException;

@Test注释有一个名为'expected'的属性,可用于检查异常。从您的方法检查 IOexception 的测试用例看起来有点像这样:

@Test(expected=IOException.class)
public void shouldReadPostParamsThrowIOExceptionIfInvalidRead(){
}

答案 1 :(得分:0)

如果文件是"正在使用"您应该获得IOException所以你可以试试这个:
(我从未测试过这个)

在你测试中使用

final RandomAccessFile lockFile = new RandomAccessFile(fileName, "rw");
lockFile.getChannel().lock();

然后从上面调用您的方法并在完成后解锁文件。