2009-01-21 33 views
16

Ok, vì vậy đây là mô tả đầy đủ của vấn đề tôi đang gặp:Không chuyển hướng công việc ràng buộc lắp ráp để thử nghiệm đơn vị với một nhân viên thử nghiệm?

Tôi cố gắng để sử dụng NUnit ExtensionMethods nhưng bất cứ khi nào tôi chạy một thử nghiệm có chứa một trong những phương pháp khuyến nông sử dụng TestDriven.Net hoặc nếu tôi chỉ phẳng ra thử để tải assembly bằng cách sử dụng GUI thử nghiệm (Icarus hoặc NUnit), tôi nhận được một FileNotFoundException.

Đầu đập vào tường và đào sâu hơn nữa Tôi nghĩ mình biết có gì sai. Cue phản xạ và vâng, tôi có thể thấy rằng NUnit.Framework> ExtensionMethods.dll có một tham chiếu đến

nunit.framework, Version=2.4.6.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77 

và phiên bản hiện tại của tôi nunit rằng tôi bao gồm là

nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77 

Bây giờ tôi chưa bao giờ lắp ráp được sử dụng tái hướng trước nhưng nó có vẻ như nó sẽ là một vấn đề đơn giản của việc thêm một App.Config với những dòng sau:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity 
        name="nunit.framework.dll" 
        publicKeyToken="96d09a1eb7f44a77" /> 
       <bindingRedirect oldVersion="2.4.6.0" newVersion="2.4.8.0" /> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

và nó là sự hiểu biết của tôi mà các cuộc gọi lên phiên bản 2.4.6 (whic h không tồn tại trên máy này) sẽ tự động chuyển hướng đến phiên bản 2.4.8.

Điều này không hoạt động tuy nhiên, và tôi nghi ngờ (nhưng chưa xác nhận) rằng điều này là do người chạy thử nghiệm không tự động đọc tệp app.config.

Vì vậy, câu hỏi của tôi là như sau:

  1. Tôi có ngay trong chẩn đoán của tôi về vấn đề ?

  2. Chuyển hướng lắp ráp là giải pháp thích hợp và tôi có đang làm không?

  3. Làm cách nào để làm việc này với nhân viên thử nghiệm ?

Trả lời

15

Điều này sẽ hoạt động nếu bạn đặt cài đặt cấu hình vào đúng tệp .config. Mà một trong đó là phụ thuộc vào môi trường bạn đang sử dụng để chạy các bài kiểm tra, nhưng cả NUnit và TestDriven.NET nên hỗ trợ sử dụng testassembly .dll.config.
Vì đây là giải pháp thích hợp, tôi sẽ nói có. Khả năng duy nhất khác là sử dụng tệp chính sách của nhà xuất bản, nhưng bạn sẽ cần khóa riêng được sử dụng để biên dịch NUnit.

+0

Cảm ơn rất nhiều, không bao giờ nghe nói về testassembly.dll.config nhưng đó là những gì tôi đang tìm kiếm. Trong trường hợp này, Tiện ích mở rộng NUnit là nguồn mở và chỉ có khoảng 70 dòng mã nên tôi vừa mới mở và biên dịch lại với phiên bản của mình. Nhưng đây là kiến ​​thức tốt cho lần sau. –

+4

@GeorgeMauer "testassembly.dll.config" là tệp App.config tiêu chuẩn được chuyển đổi thành thời gian biên dịch. Theo như tôi biết cấu hình được nạp bởi khuôn khổ .NET theo mặc định và NUnit/TestDriven.NET thậm chí không biết cụ thể về nó – Schneider

+2

@Schneider: AFAIK điều này chỉ đúng với các tệp * .exe.config, không phải cho *. Tệp dll.config, những tệp này phải được chỉ định rõ ràng khi AppDomain được tạo. – csgero

Các vấn đề liên quan