2010-09-08 2 views
5

Используя Visual Studio 2010, я написал простую службу WCF и некоторые интеграционные тесты, которые я хочу выполнить против нее. Я создаю свой прокси-сервер для тестов во время выполнения кода, а не с помощью конфигурации.При запуске mstest против службы WCF WcfSvcHost не запускается и тесты терпят неудачу. Тесты проходят при отладке

Мои тесты проходят в отладке, но не при запуске!

Неудача, если запустить - идти Test/Run/тесты в текущем контексте (как службы WCF он называет не принимал)

PASS в отладке - идти Test/Debug/тесты в текущем контексте (так как проект WCF имеет параметры WCF/запуск WCF Service Host при отладке другого проекта в том же решении)

Есть ли способ заставить WCFServiceHost запускаться, когда тесты запускаются нормально?

Спасибо, Энди

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

Можете вы добавить сообщения об исключениях? – stephenl

ответ

4

Я отключил «Пуск службы WCF хоста» при отладке другого проекта в том же растворе.

Я добавил статический метод в [ClassInitialize] к «самому хосту» службы WCF в контексте теста на время тестирования.

 [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; 
      } 
     } 
Смежные вопросы