Estoy trabajando en un proyecto con algunos formatos de archivo. Algunos formatos están especificados por .xsds, otros por documentación en sus respectivos sitios web, y algunos son formatos personalizados internos que no tienen documentación. Mwahahahaha
¿Cuál es el problema?
Me gustaría probar mis lectores de archivos, pero no estoy completamente seguro de cómo hacerlo. El flujo de la aplicación es como tal:
file.___ ===> read by FileReader.java ===> which creates a Model object
donde está la FileReader
interfaz
public interface FileReader {
public Model read(String filename);
}
El Model
tiene una serie de atributos que se rellenan cuando se lee el archivo. Se parece a algo como
public class Model {
List<String> as;
List<String> bs;
boolean isAPain = true;
// ...
}
Que he probado
Mi única idea era crear "generadores" de archivos para cada formato de archivo. Estos generadores son básicamente constructores que toman algunas variables (por ejemplo, número de comentarios para generar en un archivo) y generan un archivo de muestra que luego leo y comparo el resultado Model
con las variables que usé para generar inicialmente el archivo.
Sin embargo, esto tiene algunos problemas:
- Los archivos que genera no parecen archivos reales. El generador de ninguna manera es consciente del contexto.
- Es difícil reconocer si el generador ha generado casos extremos ya que yo soy el que configura manualmente las variables. Este método es apenas mejor que yo creando una docena de archivos de muestra.
¿Hay alguna forma mejor de hacer esto?
EDITAR: Cambié la unidad a la integración, ya que eso es lo que realmente quiero decir.
EDIT2: Aquí hay un ejemplo de los casos límite que mencioné.
Cada archivo representa un gráfico compuesto por vértices y aristas. Estos vértices y bordes se pueden unir de diferentes maneras, por lo tanto:
v1 -- e1 --> v2 <-- e2 -- v3
es diferente de
v1 -- e1 --> v2 -- e2 --> v3
en eso importa la dirección de los bordes. No estoy seguro de si esto está dentro del alcance de la pregunta, pero es difícil pensar en todos los casos de borde pertinentes cuando establezco manualmente el número de vértices, el número de bordes y solo genero las conexiones al azar.
FileReader
implementación real )? Ejemplo: dados los casos extremos encontrados en los formatos de archivo de imagen , para cada entrada de la tabla, si se admite la combinación de propiedades fila / columna, debe haber al menos un caso de prueba (un archivo de datos) que cubra esa combinación.