Biz kullandığınız StructureMap yeni bir yazılım geliştirme projesinde. Ekip üyelerinden biri, temel olarak StructureMap konteyner yapılandırmasını test eden bir birim testi uyguladı . Bunu aşağıdakileri yaparak yapar;
- Uygulama ad alanımızdaki sınıflar için yapılandırılmış derleme örneği sayısını sayar.
- Sınıf düzeyinde beklenen örnekleri tanımlar
- Beklenen örneklerin toplam bulunan örneklerle eşleştiğini iddia eder.
- Beklenen örneklerin testte tanımlananlarla eşleştiğini iddia eder
Bunun bir örneği;
var repositories = container.GetAllInstances<IEnvironmentRepository>();
Assert.AreEqual(1, repositories .Count());
foundInstances = foundInstances + repositories .Count();
Ayrıca aşağıdaki sınıf için 'birim testlerimiz' bulunmaktadır;
public MyClass(IEnvironmentRepository environmentRepository)
{
}
Bu testlerde, IEnvironmentRepository ile alay ediyoruz, bu yüzden canlı sistemde olduğu gibi kaptan enjekte etmeyeceğiz.
Bir meslektaş, "Birim testi yalnızca kendi yapılandırmasını test eder" satırındaki bir yorumla yapı haritası yapılandırmasındaki birim testini yok saydı. Bu testin amacı açıktı ve bence tamamen geçerli. Testi yok sayan adamdan IEnvironmentRepository
(test hala yok sayılırken) için yapı haritası yapılandırmasını kaldırmasını ve tam birim test paketini çalıştırmasını istedim, hepsi geçti. Daha sonra uygulamayı çalıştırdık ve kap yapılandırması artık geçersiz olduğundan uygulama sona erdi. Bence bu testin değerini kanıtladı, meslektaşım hala aynı fikirde değildi. Sadece konfigürasyonu test etmememiz gerektiğini belirtti, ancak bunun bir birim testin sorumluluğu içinde olduğunu düşünüyorum.
Yani birkaç soru;
- Geçerli bir birim testi mi - Konteynırın yapılandırmasını test ediyoruz, yapı haritası çalışmıyor (ama örtüşmeyi görebiliyorum)
- Değilse, yapılandırmayı test etmeden nasıl doğrulayabilirsiniz? Birisinin gerekli kod satırını yanlışlıkla silmesini ve teslim etmesini nasıl durdurabilirsiniz?
- Should
MyClass
birim test örneğini çözmekIEnvironmentRepository
kaptan ve bu geçiş?