2010-09-08 30 views
5

Sử dụng Visual Studio 2010, tôi đã viết một dịch vụ WCF đơn giản và một số kiểm tra tích hợp mà tôi muốn chạy với nó. Tôi xây dựng proxy của mình cho các thử nghiệm khi chạy trong mã thay vì sử dụng cấu hình.Khi chạy mstest chống lại một dịch vụ WCF, WcfSvcHost không chạy và kiểm tra thất bại. Kiểm tra vượt qua khi gỡ lỗi

Thử nghiệm của tôi vượt qua gỡ lỗi nhưng không phải khi chạy!

FAIL nếu chạy - đi thử nghiệm/Run/Các xét nghiệm trong bối cảnh hiện nay (như các dịch vụ WCF nó gọi chưa được lưu trữ)

PASS trong debug - đi thử nghiệm/Debug/Các xét nghiệm trong bối cảnh hiện nay (vì dự án WCF có WCF Options/Khởi động WCF Service Host khi gỡ lỗi một dự án khác trong cùng một giải pháp)

Có cách nào để WCFServiceHost bắt đầu khi các thử nghiệm được chạy bình thường không?

Cảm ơn, 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

Bạn có thể thêm một số thông báo ngoại lệ không? – stephenl

Trả lời

4

tôi vô hiệu hóa 'Bắt ​​đầu WCF Service Host' khi gỡ lỗi một dự án khác trong cùng một giải pháp.

Tôi đã thêm phương thức tĩnh trong [ClassInitialize] vào 'tự lưu trữ' dịch vụ WCF trong ngữ cảnh Thử nghiệm trong suốt thời gian thử nghiệm.

 [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; 
      } 
     } 
Các vấn đề liên quan