Тестирование того, что написано в 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 файл, но это не очень элегантно.
Ответ #1
Ответ на вопрос: Тестирование того, что написано в Java OutputStream
Используйте ByteArrayOutputStream, а затем извлеките из него 9X_.java данные с помощью toByteArray(). Это не будет проверять 9X_jre как запись в поток (по одному байту или в виде 9X_java-api большого буфера), но обычно вам все равно 9X_java-libraries это не нужно.
Ответ #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
Ответ на вопрос: Тестирование того, что написано в 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
-
1
-
8
-
6
-
9
-
3
-
7
-
5
-
6
-
5
-
6
-
3
-
8
-
6
-
3
-
4
-
6
-
1
-
6
-
5
-
2
-
2
-
2
-
2
-
3
-
4
-
2
-
4
-
4
-
2
-
1
-
7
-
2
-
4
-
2
-
5
-
5
-
7
-
12
-
10
-
2
-
30
-
6
-
10
-
17
-
6
-
7
-
7
-
5
-
5
-
8