2014-11-19 16 views
12

tôi có trường hợp kiểm tra đơn giản sau:Buộc nunit console Á hậu để sử dụng CLR 4.5

var uri = new Uri("http://foo.com/bar%2Fbaz"); 
Assert.AreEqual("http://foo.com/bar%2Fbaz", uri.AbsoluteUri); 

thử nghiệm này không thành công trên NET 4 nhưng đi trên .NET 4.5, tôi có thể kiểm tra điều này bằng ReSharper Á hậu kiểm tra cung cấp menu lựa chọn CLR tiện dụng.

Nhưng nếu tôi chạy thử nghiệm này sử dụng giao diện điều khiển nunit Á hậu như sau:

nunit-console.exe /framework:4.5 "C: \ Data \ Projects \ UriTest \ bin \ Debug \ UriTest.dll"

Thử nghiệm của tôi không thành công. Tôi thậm chí còn sửa đổi nunit-console.exe.config và bổ sung này:

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 

và sau khi thêm này, tôi đã bắt đầu để có được sản lượng này từ Á hậu:

Runtime Environment - 
    OS Version: Microsoft Windows NT 6.2.9200.0 
    CLR Version: 4.0.30319.34209 (Net 4.5) 

ProcessModel: Default DomainUsage: Single 
Execution Runtime: v4.5 

Nhưng vẫn thử nghiệm của tôi thất bại. Bất kỳ ý tưởng tại sao điều này xảy ra?

+0

Bạn đã bao giờ tìm thấy giải pháp chưa? Tôi đang gặp chính xác cùng một vấn đề ... –

+0

Tôi có thể repro với NUnit 2.6.4. Ngoài ra cố gắng để buộc NUnit 3 để sử dụng 4,0 nhưng vượt qua thử nghiệm của tôi ... –

Trả lời

8

Sau khi xem xét kỹ hơn vấn đề, đây là thông tin tôi thu thập được từ các diễn đàn khác nhau.

Trước tiên, nó sẽ tự động phát hiện thời gian chạy. Nếu nó không (có vẻ như trường hợp của bạn), bạn luôn có thể ép buộc khung công tác bằng cách sử dụng thời gian chạy thích hợp bằng cách sử dụng tùy chọn lệnh/framework.

Những gì bạn có trong nunit-console.exe.config buộc Á hậu NUnit sử dụng thời gian chạy được chỉ định. Nếu assembly của bạn có phiên bản .NET khác nhau, NUnit sẽ chạy chúng trong một tiến trình riêng biệt để ép buộc phiên bản framework.

Xem documentation for NUnit 2.6.2.

gì bạn có trong dòng lệnh của bạn không nên /framework:4.5 mà /framework:net-4.5

Bước tiếp theo sẽ là hãy nhìn vào bài kiểm tra của bạn và xem nếu có điều gì đó cụ thể mà làm cho nó thất bại.

Vui lòng nhận xét thêm một số thông tin khác để biết thêm thông tin.

+0

Cảm ơn câu trả lời nhưng điều này dường như không hoạt động. Đầu tiên, clr.bat không được giao với NUnit 2.6.3 và tài liệu mới không đề cập đến điều đó. Ngoài ra, các tài liệu cũ nói "Lưu ý: Nếu bạn sử dụng phần trong tệp cấu hình, tài liệu sẽ được ưu tiên hơn tùy chọn này". đó là thực tế những gì tôi đã làm với tập tin exe.config. – huseyint

+0

Đã cập nhật câu trả lời của tôi. –

+1

Vẫn không thành công với công tắc /framework:net-4.5. Bạn có thể tái tạo điều này dễ dàng: 1. Tạo một dự án DLL với [Test] này bằng cách sử dụng .NET 4.5.2 2. Xây dựng nó 3. Chạy nó thông qua nunit-console (hoặc nunit GUI cho vấn đề đó) – huseyint

0

Trong .NET 4.0 Framework có lỗi liên quan đến việc mã hóa giá trị dấu gạch chéo. Bạn có thể xem mô tả here. Trong 4.5 nó đã được cố định để làm cho kết quả RFC-3986 tuân thủ. Vì vậy, đó là lý do tại sao bạn có hành vi khác nhau cho 4.0 & 4.5.

+0

Vâng, tôi nhận thức được sự thay đổi, vấn đề tôi gặp phải là với những người chạy thử nghiệm nunit dường như hoạt động với .NET 4 ngay cả khi tôi cố buộc họ sử dụng .NET 4.5 – huseyint

+0

@huseyint, bạn có đang xây dựng giải pháp của mình không 4.5 trước khi chạy thử nghiệm? – ialekseev

+0

Có, giải pháp của tôi được xây dựng dựa trên .NET 4.5.2 đặc biệt. – huseyint

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