2010-04-27 13 views
7

Sorun: DAL derlememde başvurulan SQLite derlemesi, birim sınamaları yapılırken çıktı klasörüne kopyalanmıyor (Yerel kopyala, true olarak ayarlanmış).SQLite derlemesi, birim sınama için çıkış klasörüne kopyalanmadı

VS2008'de bir .Net 3.5 uygulamasında çalışıyorum, DAL'de NHibernate & SQLite. Veri erişimi, İkincil düzen (depo fabrikası) üzerinden diğer katmanlara maruz kalmaktadır, dolayısıyla NHibernate veya System.Data.SQLite derlemelerine başka katmanlarda başvurmaya gerek yoktur.

Birim testi için, bellekte bir SQLite oturumu oluşturan ve yeni bir Gövde uygulaması oluşturan bir genel fabrika yöntemi (ayrıca DAL'imde) vardır. Bu ayrıca, gereken tüm derlemeler için paylaşılan bir SQLit bellek içi yapılandırmasına sahip olmamak ve bu DAL iç derlemelerine başvurmaktan kaçınmak için yapılır.

Sorun, ayrı bir projede bulunan birim sınamalarını çalıştırdığımda - birim sınama projesinin referansı olarak System.Data.SQLite eklemezsem, TestResults ... \ Out klasörüne kopyalanmaz. Bu proje, Kopya yerel özelliği true olarak ayarlanmış olan System.Data.SQLite numaralı başvurularıma ait DAL projemi referans gösterse de, NHibernate yapılandırılırken sınamalar başarısız olur. Referansı test projeme eklerseniz, kopyalanır ve birim testleri çalışır.

Neyi yanlış yapıyorum?

[Güncelleme]

Ben burada cevap buldum görünüyor: TFS UnitTesting not deploying local copy assembly to test dir when on build server. DAL'ımdaki bazı statik yöntemlerde bu tür bir başvuru eklerseniz, sınamalarımda DAL aksamına başvurduğumda otomatik olarak kopyalanır. Bu bir hack gibi görünmekle birlikte, IMHO, "gerçek" bir bağımlılık yarattığından ayrı bir betiğe sahip olmaktan daha temiz bir çözümdür.

SQLite derlemesini ek bir dağıtım öğesi olarak test çalıştırma yapılandırmamma eklediğimde (LocalTestRun.testrunconfig dosyası) kopyalanmış gibi görünüyor.

Hızlı cevaplarınız için teşekkürler!

cevap

6

DAL projeniz, System.Data.SQLite derlemesini referans alır, ancak bu, özellikle NHibernate yansıması kullanılarak yüklendiğinde, test projesinin çıktı klasörüne kopyalanacağı anlamına gelmez. Derlenmiş DAL düzeneğine reflektörle bakarsanız, kod tarafından doğrudan kullanılmadığı için, başvurulan derlemeler listesinde bile bulunmuyorsa, bunlar değişir. Çözümü, birim test projesine başvurarak zaten buldunuz.

+0

Ya da bir ön test adımı olarak gerekli derlemeleri kopyalamak için bunu Nant veya eşdeğer yapı betiğinize ekleyebilirsiniz. – Gishu

+0

Teşekkürler, ama aslında iş katmanları testlerimde belirli bir veri topluluğuna başvurmaktan kaçınmak isterim, sadece doğru değil. – Groo

+1

Birim testlerinin hangi referansları referans gösterdiğinden endişe etmem. –

1

dll'yi çıkış klasörünüze el ile kopyalamak için Oluşturma adımını kullanabilirsiniz.

İlgili konular