我有以下方法
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,所以我也可以覆盖那个部分。
答案 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();
然后从上面调用您的方法并在完成后解锁文件。