Birim testi WCF yöntemi

Bir WCF servisi oluşturdum ve yöntemlerden birini test etmeye çalışıyordum. WCF servis yöntemini sağ tıkladım ve birim testi oluşturmayı seçtim.

Yeni bir test projesi oluşturdu ve bir birim testi oluşturdu.

Test projesini çalıştırmayı denedim ancak UrlToTest değerinin ne olduğundan emin değilim? Hizmete URL koydum.

[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\VS Projects\\NetBranch4\\" + 
    "MobileCheckCapture\\MobileCheckCapture", "/")]
// [UrlToTest("http://localhost:45651/")]
[UrlToTest("http://localhost/mobilecc/mobilecc.svc")]
public void AuthenticateUserTest()
{
   //TODO: Initialize to an appropriate value
    MobileCC target = new MobileCC(); 

   //TODO: Initialize to an appropriate value
    string authenticateRequest = string.Empty;

   //TODO: Initialize to an appropriate value
    string expected = string.Empty; 
    string actual;
    actual = target.AuthenticateUser(authenticateRequest);
    Assert.AreEqual(expected, actual);
    Assert.Inconclusive("Verify the correctness of this test method.");
}
5

3 cevap

Senin için bir tane inşa etmekten ziyade kendi testlerini elden geçirmen daha iyi. Hizmeti, testinizin içinde normal bir sınıfa benziyor ve işlevi çağırıyorsanız, geri beklediğiniz değere karşı durun. Tüm WCF servislerim normal sınıflar gibi test edildi, şimdi hizmete bağlanıyor ve cevapları geri almak, bağlantı noktaları ve uç noktaların doğru olmasını sağlamak gibi bir entegrasyon testinin daha fazlasıdır, hizmetin mantığını test etmekle gerçekten alakalı değildir.

ETA: İlk önce mantığı test ediyorum çünkü çoğu kez bağlantı sorunları, güvenlik duvarı sorunları, vs. WCF servisleriyle çözmek için zaman alabiliyor ve ben de son test yaptırmayı yapıyorum.

4
katma

HostType, AspNetDevelopmentServerHost ve UrlToTest, WCF değil, ASP.NET UnitTest için kullanılan parametrelerdir. Bu özniteliklere yorum yapın, giriş parametrelerinizi ayarlayın ve testi gerçekleştirip çalıştırın.

[TestMethod()]
public void AuthenticateUserTest()
{       
    MobileCC target = new MobileCC();//TODO: Initialize to an appropriate value   
    string authenticateRequest = string.Empty;//TODO: Initialize to an appropriate value
    string expected = string.Empty;//TODO: Initialize to an appropriate value       string actual;
    actual = target.AuthenticateUser(authenticateRequest);
    Assert.AreEqual(expected, actual);
    Assert.Inconclusive("Verify the correctness of this test method.");
} 

Bu yardımcı olur umarım.

3
katma
Teşekkür ederim şimdi çalışıyor ama ben gerçek = target.AuthenticateUser (authenticateRequest) üzerinde bir mola noktası koymuş; kırılmaz ve wcf yönteminde hata ayıklamama izin vermez
katma yazar user228777, kaynak
Hata ayıklama menüsü altındaki Geçerli bağlamda Test görmüyorum, Ayarlamak için seçeneklere gitmem gerekiyor mu? Teşekkürler
katma yazar user228777, kaynak
VS Menüsünde Test'e gidin, "Hata Ayıklama -> Geçerli Bağlamda Test Et" i seçin. Testin, VS'deki Test Araçları araç çubuklarında çalıştırılması için seçenekler de vardır.
katma yazar Gabe Thorns, kaynak
İki şey yapabilirsiniz: Önce, VS menüsünde "Görünüm -> Araç Çubukları" na gidin ve listeden "Test Araçları" nı seçin (daha önce seçilmemişse). Bunu yaptıktan sonra yeni bir araç çubuğu menüsü sağa işaret eden oklar gibi görünen yeşil simgelerle görünecektir. Bunlardan biri dolu yeşil bir ok ve ortasında yeşil bir daire ile beyaz bir rektal. Bu odur. İkincisi, VS menüsünde "Test -> Debug" e gidiniz. Gösterilen listede "Geçerli Bağlamda Test Et" seçeneğini görmelisiniz. Testinizi seçtiğinizden emin olun (tam anlamıyla, test dosyanız açık ve test ismini seçtiniz).
katma yazar Gabe Thorns, kaynak

Web hizmeti için test yöntemini başarılı bir şekilde çalıştırmak için [HostType ("ASP.NET")] özniteliğini kaldırmalısınız. Ayrıca UrlToTest , SVC dosyasına değil, yalnızca web uygulamasına bir URL içermelidir. Ayrıca, bazı özel durumlarda AspNetDevelopmentServer gibi test yöntemi gereksinimleri de vardır.

Yerel IIS'de SVC barındırıyorsanız, test yönteminin kodu şuna benzer:

[TestMethod()]
[UrlToTest("http://localhost/ServiceApp")]
public void ServiceTest()
{
    WcfService target = new WcfService();
    string arg = "test";
    Response actual = target.DoSmth(arg);

    Assert.IsTrue(actual != null);
}
0
katma