2009-03-19 48 views
12

Khung MSTest có một CollectionAssert chấp nhận ICollections. Phương thức của tôi trả về một IList. Rõ ràng một danh sách không phải là một bộ sưu tập ..Đơn vị thử nghiệm IList với CollectionAssert

Có cách nào để biến IList của tôi thành ICollection không?

+2

Sự cố kết nối cho việc này. Phản hồi Microsoft thông thường, tsss. https://connect.microsoft.com/VisualStudio/feedback/details/477870/collectionassert-cannot-be-used-with-hashset-t-and-possibly-other-collections# – Rudi

Trả lời

9

Bạn có thể gọi điện cho ToArray() phương pháp khuyến nông vào nó - Mảng thực hiện ICollection

Edit: Ngoài ra, trong khi List<T> thực hiện ICollection, IList<T> chỉ thực hiện ICollection<T> mà không thực hiện ICollection, vì vậy nếu bạn biết các mục trong kiểm tra là một List<T>, bạn sẽ có thể bỏ nó ...

+0

Tôi nghĩ rằng IEnumerable cho các thông số sẽ là một lựa chọn tốt hơn. NUnit đã có quyền này. – Gishu

1

bạn có thể gửi trong một danh sách

List<string> actual = new List<string>(){"1","2","3"}; 
    List<string> expected = new List<string>(){"1","2","**EditCaseFalse**"}; 
    CollectionAssert.AreEqual(actual,expected) 

tôi lấy lại không thành công (yếu tố thứ ba không phù hợp.)

+3

và chính xác điều này liên quan đến câu hỏi như thế nào? –

+0

Tôi gửi trong hai danh sách (IList) được so sánh trong CollectionAssert là vấn đề của bạn ... – salgo60

+0

Tôi xin lỗi, tôi không đọc đủ câu trả lời của bạn. Xin vui lòng tham khảo câu trả lời của @ Lee về lý do tại sao điều này là làm việc nhưng không phải là một giải pháp cho vấn đề của tôi. –