initialize create java junit outputstream

create - Probar lo que está escrito en Java OutputStream



java outputstream to string (3)

Use un ByteArrayOutputStream y luego obtenga los datos de eso usando toByteArray () . Esto no probará cómo escribe en la secuencia (un byte a la vez o como un gran búfer), pero por lo general no debería preocuparse por eso de todos modos.

Estoy a punto de escribir pruebas junit para una clase Java de análisis XML que se envía directamente a un OutputStream. Por ejemplo, xmlWriter.writeString("foo"); produciría algo como <aTag>foo</aTag> para escribirse en la salida de salida contenida dentro de la instancia de XmlWriter. La pregunta es cómo probar este comportamiento. Una solución sería, por supuesto, dejar que OutputStream sea un FileOutputStream y luego leer los resultados abriendo el archivo escrito, pero no es muy elegante.


Si puede pasar un escritor a XmlWriter, lo pasaría un StringWriter . Puede consultar los StringWriter del StringWriter utilizando toString() en él.

Si tiene que pasar un OutputStream , puede pasar un ByteArrayOutputStream y también puede llamar a toString() para obtener su contenido como una Cadena.

Entonces puedes codificar algo como:

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


Es sencillo. Como @JonSkeet dijo:

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));