2010-09-08 8 views
5

Korzystając z Visual Studio 2010, napisałem prostą usługę WCF i niektóre testy integracyjne, które chcę przeprowadzić przeciwko niemu. Buduję proxy dla testów w środowisku wykonawczym w kodzie, zamiast używać konfiguracji.Podczas uruchamiania programu mstest w stosunku do usługi WCF, WcfSvcHost nie uruchamia się, a testy kończą się niepowodzeniem. Testy przekazane podczas debugowania

Moje testy przechodzą do debugowania, ale nie po uruchomieniu!

powiedzie się, jeśli uruchomić - iść Test/Run/Testy w obecnej sytuacji (jak usługi WCF wywołuje nie został gospodarzem)

PASS w debugowania - iść Test/Debug/tests w bieżącym kontekście (ponieważ projekt WCF ma opcje WCF/Uruchom Host usługi WCF podczas debugowania innego projektu w tym samym rozwiązaniu)

Czy istnieje sposób na uruchomienie WCFServiceHost, gdy testy będą wykonywane normalnie?

Dzięki, 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

Czy możesz dodać kilka wyjątków? – stephenl

Odpowiedz

4

I niepełnosprawna 'Rozpocznij WCF Usługa Host' podczas debugowania kolejny projekt w tym samym roztworze.

Dodałem metodę statyczną w [ClassInitialize] do "self host" usługi WCF w kontekście testu przez cały czas trwania testu.

 [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; 
      } 
     } 
Powiązane problemy