¿Cómo se puede probar escribir / leer en un archivo con EasyMock [duplicar]

Esta pregunta ya tiene respuestas aquí :
Respuesta 1

Puede eludir completamente el uso de E / S de disco, utilizando E / S de memoria. No necesita EasyMock para eso, simplemente diferentes flujos de entrada y salida. Puede afirmar que sus métodos funcionan correctamente con JUnit comprobando la secuencia de salida resultante (escritura) y la lista resultante de objetos FigureGeneral (lectura).

Paso a paso:

1) Inyecte el flujo de salida que usarán los métodos de escritura.

Puede agregar otro método de "escritura" al que llama su método de "escritura" ya existente que toma una secuencia de salida con una firma como esta:

public void write(OutputStream outputStream, List<FigureGeneral> figuresList);

Su método de escritura original envolvería el método anterior llamando a ese método así:

write(new FileOutputStream(new File(fileName).getAbsoluteFile()), figuresList);

2) Repita el truco anterior para el método de lectura usando InputStream.

Eso le daría un método de lectura con una firma como esta:

private ArrayList<FigureGeneral> figureReader(InputStream inputStream);

3) Ahora escriba pruebas JUnit que usen ByteArrayInputStream y ByteArrayOutputStream y llame a los métodos anteriores.

Puede verificar los resultados de su método de escritura llamando a toByteArray () en su ByteArrayOutputStream y confirmando los resultados. Puede verificar los resultados de su método de lectura afirmando los valores en la Lista después de pasarle un cierto ByteArrayInputStream.

Aquí hay un (pseudo) método que puede agregar a su clase de prueba para afirmar que una lista de objetos FigureGeneral de diferentes naturalezas puede escribirse en una secuencia de salida, leerse desde una secuencia de entrada y ser igual.

public void assertCanBeWrittenAndReaback(List<FigureGeneral> inputFigure) {
  ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  absFigure.write(outStream, inputFigures);
  List<FigureGeneral> outputFigure = absFigure.figureReader(new ByteArrayInputStream(outStream.toByteArray()));
  assertEqualsFigureGeneralLists(inputFigure, outputFigure);
}

4) Esto le dará una cobertura de prueba bastante buena. Aún así, si desea lograr una cobertura de prueba del 100%, todavía tendrá que probar los métodos originales de escritura y lectura de figuras que ahora se han convertido en envoltorios.

Los métodos originales no hacen más que redirigir a su homónimo que utiliza la secuencia de entrada y salida. Puede verificar su redireccionamiento usando EasyMock anulando (o implementando si coloca estos métodos detrás de una interfaz) los dos métodos de redireccionamiento y afirmando que reciben los objetos FileInputStream y FileOutputStream adecuados. Sin embargo, necesitará algunos archivos temporales ya que el constructor FileOutputStream necesita un archivo existente. Sin embargo, no veo ningún problema importante al usar archivos temporales en un caso de prueba.

Respuesta: 2

Puede ser mejor hacer un archivo de prueba temporal y luego verificar su contenido, similar a esta pregunta SO.

Respuesta: 3

Estoy creando una extensión Keycloak con dependencias. Agregué la entrada en el pom.xml así: <dependency> <groupId> org.json </groupId> <artifactId> json </ ...

Hola, necesito convertir Mongo Document a DBObject (BasicDBObject). Estoy cargando un archivo a mongo usando GridFS y quiero establecer metadatos, que obtengo en el documento. Sé que Document es más o menos el ...

Tengo una ArrayList <Metadata> y quiero saber si hay una API Java para trabajar con archivos CSV que tenga un método de escritura que acepte una ArrayList <> como parámetro similar a LinqToCsv en ...

Posible duplicado: JSF 2: ¿cómo puedo obtener un valor de parámetro de contexto de web.xml usando JSF EL? Estaba acostumbrado a recuperar parámetros de contexto usando EL de esta manera $ {applicationScope.configs ...