Pergunta

Eu estou escrevendo um teste para uma classe de analisador de arquivo. O método de análise recebe um nome de arquivo como parâmetro, e deve abri-lo, a fim de analisá-lo (duh).

Eu tenho escrito um arquivo de teste, que eu coloquei para o diretório de teste / recursos dentro do meu diretório do projeto, e gostaria de passar esse arquivo para testar a minha análise. Uma vez que este projeto está em CVS, e será manipulado por outros, não posso duro código o caminho do arquivo, então eu pensei em usar a propriedade $ maven {basedir} para construir o nome do arquivo no meu teste. Algo como:

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

Alguém sabe como eu poderia conseguir isso?

Foi útil?

Solução

Você tem 2 opções:

1) Passe o caminho do arquivo para o seu teste via uma propriedade do sistema ( docs )

Em seu pom você poderia fazer 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>

Então em seu teste que você pode fazer:

System.getProperty("filePath");

2) Coloque o arquivo dentro src / test / recursos sob o mesmo pacote que a sua classe de teste. Então você pode obter para o arquivo usando Class.getResourceAsStream (String fileName) ( docs ).

Eu recomendo a opção 2 sobre a opção 1. Passando as coisas para seus testes através de propriedades do sistema é muito sujo IMO. Ele casais seus testes desnecessariamente ao corredor de teste e irá causar dores de cabeça para baixo da estrada. Carregando o arquivo fora do caminho de classe é o caminho a percorrer e é por isso maven tem o conceito de um diretório de recursos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top