Spring için yeni ve ProjectName/WebContent/WEB-INF/applicationContext.xml dosyasındaki tüm XML yapılandırmasına sahip bir Spring projesi miras aldım. Yapılandırmayı farklı bileşenlere ayırmaya çalışıyorum, bu nedenle test ederken DataSources ve Hazırda Bekleme yapılandırması gibi şeylerin yerini değiştirmek daha kolay.Bağlantılı yol kullanarak Spring Bean tanımlama dosyası alınamadı
İşte benim dosya yapısı şöyledir:
ProjectName
->WebContent
->WEB-INF
->applicationContext.xml
->spring-datasource.xml
->spring-hibernate-properties.xml
->spring-persistence.xml
->test
->us.mn.k12... (Java pkgs with JUnit tests)
->spring-hsqldb-datasource.xml
->spring-test-bean-locations.xml
->spring-test-hibernate-properties.xml
->src
->us.mn.k12... (Java pkgs with production code)
WEB-INF/applicationContext.xml, ben şu içe:
<import resource="spring-datasource.xml"/> <!-- Production datasource -->
<import resource="spring-hibernate-properties.xml"/> <!-- Production hibernate properties -->
<import resource="spring-persistence.xml"/> <!-- DAO's, hibernate .hbm.xml mapping files -->
uygulama yukarıdaki yapılandırma ile çalışır.
JUnit testlerim DbUnit ve bir HSQLDB bellek içi veritabanını kullanarak çalışır. Yani şu vardır benim JUnit test referanslar yay test fasulye locations.xml: Bu şekilde
<import resource="spring-hsqldb-datasource.xml"/> <!-- HSQLDB datasource for test -->
<import resource="../WebContent/WEB-INF/spring-persistence.xml"/> <!-- Production DAO's, hibernate .hbm.xml mapping files -->
<import resource="spring-test-hibernate-properties.xml"/> <!-- Hibernate properties for test -->
Ben Test veri kaynağı belirtmek ve özelliklerini hazırda bekletme, ancak DAO en üretim eşleme dosyası yeniden kullanabilirsiniz, Ancak, JUnit testimi çalıştırırken bir hata alıyorum. Şimdi göreli yolunu kullanmak zorunda ve sonra, <import resource="spring-persistence.xml"/>
testler ona başvuru kalmamak G/teste yay persistence.xml taşırsanız
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relative location [../WebContent/WEB-INF/spring-persistence.xml]
Offending resource: class path resource [spring-test-bean-locations.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [../WebContent/WEB-INF/spring-persistence.xml]; nested exception is java.io.FileNotFoundException: class path resource [../WebContent/WEB-INF/spring-persistence.xml] cannot be opened because it does not exist
: Burada istisna ilgili bölümü olan iyi koş. Bu yüzden, XML dosyalarının içeriğinin iyi olduğunu düşünüyorum, ancak göreceli bir yolla düzgün bir şekilde içe aktarma yapıyorum.
Göreli yolumun içe aktarılmasıyla yanlış yaptığım açık bir şey var mı? Ve belki de daha büyük soru bu test için daha kolay hale getirmek için applicationContext.xml bileşenlerini kırmak için makul bir strateji gibi görünüyor mu?
Teşekkürler!
Açıklama için teşekkürler Sean. Ant kullanıyoruz ve projemizin kökünde sadece 3 düğüm olarak src, test ve WebContent/WEB-INF var. Üretim Spring xml dosyalarını src dizinine koyar ve test dizisindeki Spring xml testi tipik bir kurulum olur mu? Veya Maven olmayan bir kurulumda yaygın olarak kullanılan başka yerlerdir. Teşekkürler! – buck64
@ buck64 evet, bunu yapardı. Maraen'de, sınıfları kaynaklardan ayırmak için bir sözleşme var, ama sınıf yükleyicisine hepsi aynı. –
eğer durum böyleyse, kavanozlarımın (fasulyelerle) /applications/Foo.ear/FooWebApp'a yerleştirilmesi nasıl mümkün olabilir.savaş/WEB-INF/lib ve her şey çalışıyor! – voipp