Yazmış olduğum bir WCF ana bilgisayar yönetim motorunu birim test etmeye çalışıyorum. Motor temelde, konfigürasyona bağlı olarak anında ServiceHost örnekleri oluşturur. Bu, yeni bir hizmet eklendiğinde veya eski bir hizmet kaldırıldığında, tüm hizmetlerin kapatılmasına ve yeniden başlatılmasına gerek kalmadan hangi hizmetlerin mevcut olduğunu dinamik olarak yeniden yapılandırmamızı sağlar.
Bununla birlikte, ServiceHost'un çalışma şekli nedeniyle bu ana bilgisayar yönetim motorunu test etmede bir güçlükle karşılaştım. Bir ServiceHost önceden oluşturulmuş, açılmış ve belirli bir uç nokta için henüz kapatılmamışsa, aynı uç nokta için başka bir ServiceHost oluşturulamaz ve bu da bir istisnaya neden olur. Modern birim test platformlarının test yürütmelerini paralel hale getirmesi nedeniyle, bu kod parçasını birim test etmenin etkili bir yolu yok.
Genişletilebilirliği nedeniyle, testleri seri olarak çalıştırmaya zorlamanın bir yolunu bulabileceğimi umarak xUnit.NET kullandım. Ancak hiç şansım olmadı. Burada SO'daki birinin benzer bir sorunla karşılaştığını ve birim testlerinin seri olarak nasıl çalıştırılacağını bildiğini umuyorum.
NOT: ServiceHost , Microsoft tarafından yazılmış bir WCF sınıfıdır. Onun davranışını değiştirme yeteneğim yok. Her hizmet uç noktasını yalnızca bir kez barındırmak da doğru davranıştır ... ancak, özellikle birim testi için elverişli değildir.