Testuję strumień wyjściowy w java, jak poniżej.Testowanie wyjścia output.write (<String>) bez tworzenia pliku
Writer outputStream = getOutputStream(fileName);
if(outputStream != null) {
try {
outputStream.write(inputText);
}
finally {
outputStream.close();
}
}
else {
throw new IOException("Output stream is null");
}
Jestem napisać test Mockito jak poniżej
public void testFileWrite() throws IOException {
when(testObj.getOutputStream(outputFileNameValidValue)).thenReturn(outputStreamMock);
doNothing().when(outputStreamMock).write(Matchers.anyString());
doNothing().when(bufferedReaderMock).close();
testObj.write(outputFileNameValidValue, reveredFileInput);
verify(outputStreamMock).write(Matchers.anyString());
verify(outputStreamMock).close();
}
Problem jest podczas tworzenia OutputStreamWriter(new FileOutputStream(filename))
plik fizyczny na dysku jest tworzony.
Czy możemy przetestować Outputstream.write
bez pisania pliku na dysku?
Dzięki Anand
Proszę o wyjaśnienie - skąd utworzyć 'OutputStreamWriter' - nie widzę go w kodzie. Zgaduję, że jest w 'getOutputStream' - z wyjątkiem tego, że utworzyłeś tę metodę. Musisz opublikować cały swój kod, jeśli chcesz, aby ludzie dobrze Ci pomogli. Również 'getOutputStream' powinien prawdopodobnie zostać wywołany czymś innym (może' makeWriter'), ponieważ nie otrzymuje 'OutputStream'. –
W metodzie getOutputStream. Powód, dla którego przeniosłem to do metody z nadzieją, że mockito nie uruchomi mitu i nie zwróci drwin. ale jestem w błędzie. – Anand
Po przejrzeniu google i przeczytaniu kilku dokumentów okazało się, że PowerMock może to łatwo zrobić. Z requireNew lub używając suppressConstructor i Whitebox.setInsternalState. Testowanie takich rzeczy za pomocą PowerMocka jest bardzo łatwe. Dziękuję wszystkim za komentarze i odpowiedzi ..pozdrowienia, Anand Barhate – Anand