Android 如何为方法的catch块执行失败场景
下面是我想为其编写测试用例的代码Android 如何为方法的catch块执行失败场景,android,mockito,powermockito,Android,Mockito,Powermockito,下面是我想为其编写测试用例的代码 public static void createFileAndSave(String tag, String logText, File logFile) { try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(logFile, true))) { bufferedWriter.write(getCurrent
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());
}
}
我已经为它编写了测试用例,就像actuall方法的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”是引发异常的错误路径
输出:例如,getMessage()结果为空
@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);
}
}
有人能提出更好的模拟方法吗?如果我在createFileAndSave()方法的catch块中添加一个throw Nullpointer异常,那么测试用例的catch块将被执行
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) {
throws(NullPointerException);
}
}
如果我在createFileAndSave()方法的catch块中添加一个throw Nullpointer异常,那么测试用例的catch块将被执行
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) {
throws(NullPointerException);
}
}
不清楚你的意思…你得到了一个例外。如果您没有,就没有任何东西可以调用
getMessage()
。不清楚您的意思是什么……您遇到了一个异常。如果没有,就不会有任何东西可以调用getMessage()
on。