Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为方法的catch块执行失败场景_Android_Mockito_Powermockito - Fatal编程技术网

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。