Frage

Ich bin ein Test für eine Datei-Parser-Klasse zu schreiben. Die Parse-Methode erhält einen Dateinamen als Parameter, und muss sie öffnen, um sie zu analysieren (duh).

Ich habe eine Testdatei writen, dass ich in meinem Projektverzeichnis in das Test / Ressourcen-Verzeichnis gesetzt und möchte diese Datei übergebe meinen Parse zu testen. Da dieses Projekt in CVS ist, und wird von anderen manipuliert wird, kann ich den Dateipfad nicht schwer Code, so dachte ich an die Maven $ {} basedir Eigenschaft verwenden, um die Dateinamen in meinem Test zu bauen. So etwas wie:

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

Hat jemand weiß, wie kann ich das erreichen?

War es hilfreich?

Lösung

Sie haben 2 Möglichkeiten:

1) Führen Sie den Dateipfad zu Ihrem Test über eine Systemeigenschaft ( docs )

In Ihrem pom Sie etwas tun könnte, wie:

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

Dann in Ihrem Test können Sie tun:

System.getProperty("filePath");
Setzen Sie

2), um die Datei in src / test / Ressourcen unter dem gleichen Paket wie Ihre Testklasse. Dann können Sie auf die Datei erhalten mit Class.getResourceAsStream (String filename) ( docs ).

Ich würde empfehlen, die Option 2 über Option 1. Passing Dinge Ihre Tests über Systemeigenschaften ist IMO sehr schmutzig. Es koppelt Ihre Tests unnötig auf die Probe Läufer und verursachen Kopfschmerzen die Straße hinunter. die Datei aus dem Classpath Laden ist der Weg zu gehen, und deshalb Maven das Konzept einer Ressource-Verzeichnisses hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top