NUnit không chạy mã Visual Studio 2010


98

Tôi đang cố gắng tải một dll Visual Studio 2010 beta vào NUnit GUI. Tôi gặp lỗi cửa sổ bật lên.

Hợp ngữ này được xây dựng bởi thời gian chạy mới hơn thời gian chạy được tải hiện tại và không thể tải được. Bạn có thể đang cố gắng tải một bản dựng lắp ráp với phiên bản CLR mới hơn phiên bản mà NUnit hiện đang chạy.

Làm cách nào để buộc tệp thực thi chạy trong .NET 4?


Câu hỏi này có thực sự liên quan đến mã VS 2010 hoặc .NET 4 không? - Tôi đang tìm một công cụ cho phép tôi chạy các bài kiểm tra NUNIT trên Visual Studio 2010 và câu hỏi này đã gây hiểu lầm.
Nicolas Irisarri

@Nicolas - nó đề cập đến .NET 4.0.
Daniel A. White

Câu trả lời:


132

Tôi đã tải xuống nguồn NUnit 2.5 và mở giải pháp VS2008 trong phiên bản VS2010 beta. Khi quá trình chuyển đổi hoàn tất, tôi mở tất cả các dự án và thay đổi cài đặt khung mục tiêu cho tất cả các dự án thành ".NET Framework 4.0". Sau đó tôi đã xây dựng giải pháp mà không có bất kỳ lỗi nào. Bây giờ tôi có thể sử dụng ứng dụng NUnit GUI để chạy các thử nghiệm được xây dựng cho .NET 4.0. Tôi đã không thực hiện kiểm tra toàn diện bản dựng này nên có thể có vấn đề, nhưng đối với mục đích của tôi, nó hoạt động tốt.

Cập nhật: Không cần thiết phải xây dựng lại NUnit. Tôi phát hiện ra rằng nếu bạn thêm phần sau vào tệp cấu hình NUnit liên quan, bạn có thể chạy một dll thử nghiệm được xây dựng cho .NET 4.0.

Trong <cấu hình> thêm:

<startup>
  <supportedRuntime version="v4.0.30319" />
</startup>

và trong <runtime> thêm:

<loadFromRemoteSources enabled="true" />

3
Được, các bản cập nhật cấu hình làm cho nó hoạt động, nhưng tôi phải sử dụng phiên bản = "v4.0.21006" cho thẻ Thời gian chạy yêu cầu của mình.
mkmurray

4
BTW, vị trí mặc định của tệp cấu hình là: C: \ Program Files \ NUnit 2.5.3 \ bin \ net-2.0 \ nunit.exe.config Việc thêm các tùy chọn đó vào cấu hình phù hợp với tôi.
Brad Irby

2
Không thể làm cho điều này hoạt động với Nunit + .net4 RTM mới nhất. Tôi đã thêm các mục được đề xuất vào nunit-console.exe.config nhưng tôi nhận được: System.ArgumentException: Khung net-4.0 không khả dụng Đã thử với các phiên bản trên + v4.0.30319 Tôi đang chạy 2008 R2 x64
Andreas Öhlund

1
Đối với trình chạy bảng điều khiển, hãy thay đổi cấu hình như đã đề cập, nhưng sử dụng v4.0.30319 cho phiên bản RTM của .NET 4.0. Ngoài ra, hãy chạy nó với đối số dòng lệnh này: /framework=4.0.30319
Lance Fisher

1
Tôi đã gặp may khi sử dụng tùy chọn dòng lệnh /framework:net-4.0.30319 thay vì thay đổi cấu hình. Điều này rất hữu ích để tôi có thể kiểm soát ứng dụng nào sử dụng 4.0 CLR và ứng dụng nào không.
Kevin Crowell

25

Với .NET 4 được phát hành, tôi đã sử dụng

<supportedRuntime version="v4.0.30319" />

trong NUnit 2.5.4 exe.config thay vì RequiRuntime và thẻ loadFromRemoteResources như được hiển thị ở trên và tất cả đều hoạt động tốt. Cảm ơn!


17

Bạn không phải sửa đổi bất kỳ tệp nào

chỉ cần mở tệp này và mọi thứ sẽ hoạt động tốt

C: \ Program Files (x86) \ NUnit 2.5.10 \ bin \ net-2.0 \ nunit-x86.exe


Cảm ơn bạn - đã giải quyết trường hợp của tôi. Phải sử dụng phiên bản x86 của nunit cho các bài kiểm tra đơn vị được biên dịch x86. Cảnh báo phiên bản CLR là một con cá trích đỏ. Sử dụng nunit 2.5.10.
Nigel Touch

Tương tự ở đây, bằng cách nào đó phải sử dụng phiên bản x86
gavin

12

Trong NUnit 2.5.5, bạn có thể chỉ định trong dòng lệnh tùy chọn /framework=net-4.0 và nó tương thích với các hội đồng mới được tạo với bản phát hành VS2010 mới nhất.


3
Tôi chưa bao giờ có thể làm cho điều này thành công. Tôi đã thấy mọi người sử dụng /framework:net-4.0.30319 và tất cả các loại biến thể khác. Sẽ rất tuyệt nếu họ bao gồm các tùy chọn thực tế trên tài liệu của trang web.
Jason Short

2
@Jason Có vẻ như điều này chỉ hoạt động trên phiên bản console. Phiên bản GUI không có tùy chọn này.
Roman Starkov

+1 vì đã đề cập rằng điều này hoạt động bắt đầu từ phiên bản 2.5.5! Tôi đã NUnit ném ArgumentExceptions và NullReferenceExceptions trên một trong các máy của mình và hóa ra đó là do phiên bản 2.5.0.
realMarkusSchmidt

2

Giải pháp được đề xuất đã hoạt động hiệu quả để NUnit chạy. Thật không may, khi tôi đến bước bảo hiểm mã của mình, NCover bắt đầu cung cấp cho tôi:

Đã kết thúc quá trình đã lập hồ sơ. Kết nối hồ sơ không được thiết lập.

Giải pháp tốt nhất mà tôi tìm thấy cho việc này là chỉ sử dụng phiên bản "-x86" của NUnit với NCover:

NCover.Console.exe nunit-console-x86.exe - tham số bổ sung--

Hoạt động ngay bây giờ.


1
Cảm ơn bạn vì điều này, tôi đã gặp sự cố tương tự, bản sửa lỗi của bạn đã giải quyết được!
CubanX

2

Để tìm phiên bản .net 4 của bạn từ Visual [C # 2010 Express, hoặc phiên bản từ trước đến nay], hãy chuyển đến phần "Giới thiệu" của ứng dụng Visual trong mục Trợ giúp của menu. Nó sẽ hiển thị dưới dạng phiên bản trong dòng Microsoft .NET Framework ở trên cùng bên phải của cửa sổ.


1

Tôi gặp phải thông báo lỗi rất giống nhau khi chạy NUnit 2.4.8. Vì tôi đã không nâng cấp trong một thời gian, tôi đã cài đặt NUnit hiện tại (v2.5.9) và thấy rằng nó hiện hỗ trợ các hội đồng VS2010. Vì vậy, nếu bạn mới gặp lỗi này, hãy kiểm tra phiên bản NUnit của bạn : kể từ tháng 12 năm 2010 (hoặc lâu hơn), điều duy nhất bạn cần làm là nâng cấp NUnit.


Tôi đang chạy NUnit 2.5.9 được tải xuống vào ngày 15/03/2011 và vấn đề này sẽ không biến mất đối với tôi. Ngay cả khi tôi thử giải pháp được đề xuất
DrLazer

1

Kể từ NUnit 2.5.10, bạn có thể bật hỗ trợ studio trực quan trong trình chạy GUI:

Công cụ-> Cài đặt-> Hỗ trợ IDE

Sau đó, tôi đã có thể đính kèm thành công quy trình nunit-agent.exe chạy lắp ráp của bạn trong miền ứng dụng .NET 4.0


0

Nếu bạn gặp sự cố này sau khi nâng cấp lên nunit 2.5.5 thì bạn sẽ cần phải nâng cấp nant lên phiên bản mới nhất đối với tôi, đó là .91 alpha.


0

Tôi thấy hữu ích khi bắt đầu từ Mẫu ứng dụng NUnit . Nó hỗ trợ VS C # Express, cho phép kiểm tra gỡ lỗi và chứa NUnit được biên dịch trước cho .NET 4.0. Cảm ơn tác giả, dự án thử nghiệm mới đã sẵn sàng với một cú nhấp chuột.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.