Я собираюсь написать тесты junit для Java-класса синтаксического разбора XML, который выводится непосредственно в OutputStream. Например, xmlWriter.writeString("foo");
произведет что-то вроде <aTag>foo</aTag>
, которое будет записано в выходной поток, находящийся внутри экземпляра XmlWriter. Вопрос в том, как проверить это поведение. Разумеется, одним из решений было бы позволить OutputStream быть FileOutputStream, а затем читать результаты, открывая записанный файл, но он не очень изящный.Тестирование того, что написано на Java OutputStream
21
A
ответ
23
Используйте ByteArrayOutputStream, а затем получите данные из этого, используя toByteArray(). Это не будет проверять , как записывает в поток (по одному байту за раз или в виде большого буфера), но, как правило, вам все равно это не нужно.
3
Если вы можете передать Writer XmlWriter, я передам ему StringWriter
. Вы можете запросить содержимое StringWriter
, используя toString()
.
Если вам нужно пройти OutputStream
, вы можете передать ByteArrayOutputStream
, а также можете позвонить по телефону toString()
, чтобы получить его содержимое в виде строки.
Тогда вы можете написать что-то вроде:
public void testSomething()
{
Writer sw = new StringWriter();
XmlWriter xw = new XmlWriter(sw);
...
xw.writeString("foo");
...
assertEquals("...<aTag>foo</aTag>...", sw.toString());
}
2
Это просто. Как @JonSkeet сказал:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// pass the baos to be writed with "value", for this example
byte[] byteArray = baos.toByteArray();
Assert.assertEquals("value", new String(byteArray));
Смежные вопросы
- 1. Что конкретно написано на странице?
- 2. Использование Java OutputStream
- 3. Что это написано?
- 4. Рассмотрите только часть того, что написано в ячейке Excel-VBA
- 5. response.addCookie после того, как что-то написано уже до
- 6. Java BufferedOutputStream vs OutputStream
- 7. Модульное тестирование на Java - что это такое?
- 8. Java OutputStream Skip (offset)
- 9. Эспрессо-тестирование того, что ImageView содержит drawable
- 10. Тестирование того, что admob работает перед публикацией
- 11. C# log все, что написано на консоли
- 12. Как проверить, что-то написано на консоли?
- 13. Java outputStream не работает
- 14. Java: OutputStream и InputStream
- 15. Java: преобразовать InputStream в OutputStream
- 16. Переключение Writers на OutputStream в Java
- 17. Java FileInput/OutputStream и ByteBuffer
- 18. Получите, что написано в меню выбора
- 19. Java Socket OutputStream не смывается
- 20. Java BufferedOutputStream: сколько байтов написано
- 21. Java OutputStream для нескольких файлов
- 22. Есть ли что-то вроде прокатки OutputStream?
- 23. Java OutputStream и InputStream инициализации
- 24. Рандомизированное тестирование на Java
- 25. Java outputStream не корректно печатается
- 26. OutputStream удалить содержимое файла JAVA
- 27. Умереть, если что-нибудь написано в STDERR?
- 28. Невозможно прочитать из трубы после того, как что-то написано на него дочерний процесс
- 29. Android: Большинство игр на Android Market написано на Java?
- 30. ничего не написано на JFrame