Pregunta

Estoy escribiendo una prueba para una clase de analizador de archivos. El método de análisis recibe un nombre de archivo como parámetro y debe abrirlo para analizarlo (duh).

He escrito un archivo de prueba, que puse en el directorio test / resources dentro de mi directorio de proyecto, y me gustaría pasar este archivo para probar mi análisis. Dado que este proyecto está en CVS y será manipulado por otros, no puedo codificar la ruta del archivo, por lo que pensé en usar la propiedad maven $ {basedir} para construir el nombre del archivo en mi prueba. Algo así como:

public void parseTest() {
    ...
    sut.parse( ${basedir} + "src/test/resources/testFile" );
    ...
}

¿Alguien sabe cómo podría lograr esto?

¿Fue útil?

Solución

Tienes 2 opciones:

1) Pase la ruta del archivo a su prueba a través de una propiedad del sistema ( documentos )

En tu pom puedes hacer algo como:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.4.2</version>
        <configuration>
          <systemProperties>
            <property>
              <name>filePath</name>
              <value>/path/to/the/file</value>
            </property>
          </systemProperties>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

Luego, en su prueba, puede hacer:

System.getProperty("filePath");

2) Coloque el archivo dentro de src / test / resources en el mismo paquete que su clase de prueba. Luego puede acceder al archivo usando Class.getResourceAsStream (String fileName) ( documentos ).

Recomiendo encarecidamente la opción 2 sobre la opción 1. Pasar cosas a las pruebas a través de las propiedades del sistema es muy sucio. Acopla sus pruebas innecesariamente al corredor de pruebas y causará dolores de cabeza en el futuro. Cargar el archivo fuera del classpath es el camino a seguir y es por eso que Maven tiene el concepto de un directorio de recursos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top