2010-09-08 13 views
5

Visual Studio 2010'u kullanarak, basit bir WCF hizmeti ve buna karşı çalıştırmak istediğim bazı entegrasyon testleri yazdım. Yapılandırmayı kullanmak yerine, koddaki çalışma zamanında testler için proxy oluşturuyorum.Bir WCF hizmetine karşı mstest çalıştırırken, WcfSvcHost çalışmaz ve sınama başarısız olur. Testler hata ayıklandığında

Testlerim hata ayıklamasından geçiyor, ancak çalışma zamanı değil!

FAIL eğer çalıştırmak - geçerli bağlamda Testi/Debug/Testleri go - Deneme/Çalıştır/geçerli bağlamda Testleri (WCF Servisi olarak barındırıldığı edilmemiştir çağrıları) ayıklama içinde

PASS gitmek (WCF projesi aynı çözümde başka bir projeyi ayıklarken WCF Hizmet Ana Bilgisayarı WCF Hizmet Ana Bilgisayarı'nı çalıştırırken)

WCFServiceHost'un, testler normal olarak çalıştırıldığında başlatılması için bir yol var mı?

sayesinde Andy

Test method BulkLoaderIntegrationTests.IntegrationTests.ImportEntries_withGoodPCMs_reportsCreatedOk threw exception: 
    System.ServiceModel.EndpointNotFoundException: Could not connect to net.tcp://localhost:8001/OLELoader. The connection attempt lasted for a time span of 00:00:00.9687686. TCP error code 10061: No connection could be made because the target machine actively refused it 127.0.0.1:8001. ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:8001 
+0

Bazı özel durum iletilerini ekleyebilir misiniz? – stephenl

cevap

4

özürlü 'Başlat WCF hizmeti ana bilgisayarı' aynı çözümde başka projeyi ayıklama.

[ClassInitialize] içinde, sınama süresi boyunca Sınama bağlamında WCF hizmetini 'kendinin barındırması' için statik bir yöntem ekledim.

 [ClassInitialize] 
     public static void Init(TestContext t) 
     { 
      IntegrationTests.InitService(); 
     } 

     [ClassCleanup] 
     public static void CleanUp() 
     { 
      IntegrationTests.host.Close();   
     } 

     private static bool ServiceIsStarted = false; 
     private static ServiceHost host; 
     private static void InitService() 
     {   
      if (!ServiceIsStarted) 
      { 
       // Create the ServiceHost. 
       host = new ServiceHost(typeof (OLEImport), 
              new Uri(IntegrationTestHelper.BaseAddress)); 

       // Enable metadata publishing. 
       ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
       smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15; 
       host.Description.Behaviors.Add(smb); 

       host.Open(); 
       ServiceIsStarted = true; 
      } 
     } 
İlgili konular