Тестирование того, что написано в Java OutputStream

Я собираюсь написать тесты junit для Java-класса 9X_javax синтаксического анализа XML, который выводит 9X_outputstream данные непосредственно в OutputStream. Например, xmlWriter.writeString("foo"); создаст 9X_java-api что-то вроде foo, которое будет записано в 9X_java-api поток вывода, хранящийся внутри экземпляра 9X_java-libraries XmlWriter. Вопрос в том, как проверить это 9X_java поведение. Одним из решений, конечно же, было 9X_.java бы позволить OutputStream быть FileOutputStream, а 9X_.java затем прочитать результаты, открыв записанный 9X_java файл, но это не очень элегантно.

27
0
3
Общее количество ответов: 3

Ответ #1

Ответ на вопрос: Тестирование того, что написано в Java OutputStream

Используйте ByteArrayOutputStream, а затем извлеките из него 9X_.java данные с помощью toByteArray(). Это не будет проверять 9X_jre как запись в поток (по одному байту или в виде 9X_java-api большого буфера), но обычно вам все равно 9X_java-libraries это не нужно.

29
0

Ответ #2

Ответ на вопрос: Тестирование того, что написано в Java OutputStream

Если вы можете передать Writer в XmlWriter, я 9X_openjdk бы передал ему StringWriter. Вы можете запросить содержимое 9X_oraclejdk StringWriter, используя для этого toString().

Если вам нужно передать 9X_oraclejdk OutputStream, вы можете передать ByteArrayOutputStream, а также можете вызвать 9X_oraclejdk для него toString(), чтобы получить его содержимое 9X_jre в виде строки.

Затем вы можете написать что-то 9X_java-se вроде:

public void testSomething()
{
  Writer sw = new StringWriter();
  XmlWriter xw = new XmlWriter(sw);
  ...
  xw.writeString("foo");
  ...
  assertEquals("...foo...", sw.toString());
}

3
0

Ответ #3

Ответ на вопрос: Тестирование того, что написано в Java OutputStream

Все просто. Как сказал @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));

9X_junit

3
0