【发布时间】:2020-07-17 12:51:42
【问题描述】:
下面是我要编写测试用例的代码,
public static void createFileAndSave(String tag, String logText, File logFile) {
try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(logFile, true))) {
bufferedWriter.write(getCurrentDate() + " " + tag + " " + logText + "\r\n");
bufferedWriter.newLine();
} catch (NullPointerException | IOException ex) {
Log.e(TAG, "Couldn't write the file = " + ex.getMessage());
}
}
我已经为它编写了测试用例,就像实际方法的 catch 块中那样,但是当我调试 ex.getMessage 时在 catch 块中为 null。
@Test
public void testWriteToFileException() {
File file = mock(File.class);
try {
when(file.getAbsolutePath()).thenReturn("/data/user/0/logs/logs.txt");
when(file.exists()).thenReturn(true);
Logger.createFileAndSave("text", "text" ,file);
} catch (Exception e) {
assertTrue(e instanceof NullPointerException);
}
}
其中“/data/user/0/logs/logs.txt”是引发异常的错误路径。
输出:ex.getMessage() 结果为空。
谁能提出更好的模拟方法?
【问题讨论】:
-
不清楚您的意思...您正在遇到异常。如果你不是,就没有什么可以打电话给
getMessage()on。
标签: android mockito powermockito