2008-10-29 25 views
17

Dosya ayrıştırıcı sınıfı için bir test yazıyorum. Ayrıştırma yöntemi parametre olarak bir dosya adı alır ve ayrıştırmak için onu açmalıdır (duh).JUnit testinde maven özellikleri nasıl alınır?

Proje dizinimdeki test/kaynak dizinine koyduğum ve bu dosyayı ayrıştırmamı test etmek için iletmek istediğim bir test dosyası yazdım. Bu proje CVS'de olduğundan ve diğerleri tarafından manipüle edileceğinden, dosya yolunu kodlayamıyorum, bu yüzden testimde dosya adı oluşturmak için maven $ {basedir} özelliğini kullanmayı düşündüm. Şunlar gibi:

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

Bunu nasıl başarabileceğimi bilen biri var mı?

1) gibi bir şey yapabileceğini sizin pom bir sistem özelliği (docs)

aracılığıyla testine dosya yolunu geçirin: Sonra

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

cevap

22

2 seçeneğiniz var Testinizde şu işlemleri yapabilirsiniz:

2) Dosyayı sr'in içine koyun. Test sınıfınız ile aynı pakette c/test/kaynakları. Sonra Class.getResourceAsStream (String dosyaAdı) (docs) kullanarak dosyaya alabilirsiniz.

Seçenek 2'nin üzerinde seçenek 2'yi öneririm. Sistem özelliklerine göre testlerinize bir şeyler iletmek çok kirli IMO'dur. Testlerinizi gereksiz yere test yolcusuna bağlar ve baş ağrısına yol açar. Dosyayı classpath'tan yüklemek, gidilecek yoldur ve bu yüzden maven bir kaynak dizini kavramına sahiptir.

+0

Seçenek 2'yi alacağım. Ama dosya adını geçmek yerine, Class.getResourceAsStream (String dosyaAdı) yöntemini kullanmak yerine Class.getResource (String dosyaAdı) .getFile() kullanıyorum. Teşekkürler Mike – Alexandre

+0

Bu harika. Sadece bir JAR'dan (eğer bu mümkün değil) testleri çalıştırmanız gerekiyorsa, bazı garip davranışların olabileceğini unutmayın. –

+2

Bu cevabın ne kadar tamamlandığından emin değilsiniz - private settings.xml dosyasında saklamak isteyebileceğiniz yerel DB adresi gibi "entegrasyon testi" özellikleri nedir? –