2016-06-24 15 views
8

Khi tôi chạy hoặc gỡ lỗi bài kiểm tra đơn vị của tôi bằng cách sử dụng Resharper Unit Test Runner, tôi nhận được một hộp thoại bật lên nói rằng "Unit Test Runner thất bại để chạy thử nghiệm - Không thể tải một hoặc nhiều loại yêu cầu Lấy LoaderExceptions bất động sản cho biết thêm thông tin ".Làm thế nào để chẩn đoán Resharper Unit Test Runner "Không thể tải một hoặc nhiều loại yêu cầu" lỗi

enter image description here

Bây giờ tôi đã cố gắng xây dựng lại, làm sạch, tự xóa thư mục, khởi động lại visual studio, phần cứng khởi động lại, tìm trong cửa sổ đầu ra/gỡ lỗi và tối cho phép chế độ R # "nội bộ" để tôi có thể xem nhật ký của nó (được viết thành% Temp% \ JetLogs như tôi hiểu), nhưng không có cách nào giải quyết nó hoặc g ives bất kỳ manh mối nào cả. Tôi đã thử "gỡ lỗi" R # nhưng một lần nữa hộp thoại bật lên trước khi trình gỡ rối chạm bất kỳ ngoại lệ nào.

Làm cách nào để giải quyết vấn đề này? Nó cực kỳ khó chịu!

Tôi đang sử dụng:

  • R # 2016.1.2
  • NUnit 3.2.1
  • Visual Studio 2015 Update 2 (14.0.25123)
+0

Nó dường như lỗi này là đến trực tiếp từ Nunit, nhưng tôi ngạc nhiên là R # không làm bất cứ điều gì để giúp tôi chẩn đoán này ... – Schneider

+0

Resharper không có cơ hội để, như NUnit bắt ngoại lệ và hình thái trong kết quả kiểm tra không thành công (không có tất cả chi tiết, đó là vấn đề thực sự). – Monoman

Trả lời

15

tôi đã kết thúc việc chẩn đoán điều này với một phương pháp khá đơn giản:

Tôi đã chuyển đổi assembly thử nghiệm đơn vị của mình từ thư viện lớp thành ứng dụng bảng điều khiển và thêm một Main điểm vào (được hiển thị bên dưới). Trong đó tôi lặp lại tất cả các loại hội đồng mà tôi hy vọng sẽ gây ra tất cả các loại & hội đồng phụ thuộc được nạp, mà sẽ tiết lộ bất kỳ trường hợp ngoại lệ tải. Và có nó đã làm việc. Nó nhanh chóng ném một System.Reflection.ReflectionTypeLoadException là nguồn chính tắc của thông báo lỗi "Không thể tải một hoặc nhiều ...". Trong trình gỡ lỗi, tôi có thể kiểm tra thuộc tính LoaderExceptions cho tôi biết vấn đề cơ bản là gì.

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var types = Assembly.GetExecutingAssembly().GetTypes(); 
    } 
} 
+1

Và bằng cách làm điều này (xin lỗi, không thể lấy mã của tôi để nhìn tốt trong bình luận), tôi nhận được một popup nói cho tôi chính xác những gì lắp ráp nó không thể tải, và tại sao. Trong trường hợp của tôi, vấn đề thực sự là sự kết hợp của các hội đồng đã ký và chưa ký mạnh mẽ: 'try { var types = Assembly.GetExecutingAssembly(). GetTypes(); } bắt (ReflectionTypeLoadException ex) { foreach (mục var trong ex.LoaderExceptions) { MessageBox.Show (item.Message); } } ' –

+3

Bạn sẽ nghĩ rằng Resharper Test Runner sẽ có cách để nắm bắt Ngoại lệ đó và cho phép bạn truy xuất ngoại lệ mà không phải tự viết. –

6

Schneider của câu trả lời sẽ chỉ làm việc tốt nhưng nếu có những người lười biếng nhiều hơn từ đó bạn có thể kiểm tra LoaderExceptions trong PowerShell nhanh hơn một chút.

[Reflection.Assembly]::LoadFile('<path to your assembly>') | % {$_.GetTypes()} 
$Error[0].Exception.InnerException.LoaderExceptions 
+0

'<đường dẫn đến assembly của bạn>' phải là một đường dẫn tuyệt đối – Seafish

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