2013-09-05 27 views
9

Gần đây tôi bắt đầu sử dụng NUnit để thực hiện kiểm tra tích hợp cho dự án của tôi. Đó là một công cụ tuyệt vời, nhưng tôi đã tìm thấy một nhược điểm mà tôi dường như không thể có được câu trả lời. Tất cả các bài kiểm tra tích hợp của tôi đều sử dụng thuộc tính TestCaseSource và chỉ định tên nguồn trường hợp thử nghiệm cho mỗi bài kiểm tra. Bây giờ vấn đề là việc chuẩn bị các nguồn trường hợp thử nghiệm này mất khá nhiều thời gian (~ 1 phút) và nếu tôi đang chạy một thử nghiệm duy nhất, NUnit luôn tải nguồn trường hợp thử nghiệm SINGLE, ngay cả khi nó không phải là nguồn test cho thử nghiệm tôi đang chạy.NUnit - Tải TẤT CẢ TestCaseSources ngay cả khi chúng không được yêu cầu bởi thử nghiệm hiện tại

Hành vi này có thể thay đổi để chỉ có (các) nguồn trường hợp thử nghiệm cho thử nghiệm mà tôi đang chạy không? Tôi muốn tránh tạo ra các assembly mới mỗi khi tôi muốn tạo một test mới (có vẻ khá thừa và cồng kềnh, chưa kể đến, khó bảo trì), vì tôi đã đọc các test trong các assembly khác nhau được tải riêng, nhưng tôi don ' t biết về các nguồn trường hợp thử nghiệm. Điều đáng nói đến là tôi đang sử dụng Resharper làm người thử nghiệm.

TL; DR: Cần phải thông báo cho NUnit chỉ tải các TestCaseSources cần cho các thử nghiệm đang chạy trong phiên hiện tại. Hành vi hiện tại là ALL TestCaseSources được tải cho bất kỳ thử nghiệm nào được chạy.

+0

Bạn có thể cung cấp một số mã thể hiện hành vi hiện tại không? –

+0

Chắc chắn, tôi sẽ sớm chỉnh sửa câu hỏi gốc và thêm mã mà tôi đang sử dụng. – Anshul

+0

Điều này thể hiện hành vi của tôi - chạy ReSharper 6 trên VS2013. Xin lỗi vì định dạng - Tôi không muốn đăng nó dưới dạng câu trả lời không trả lời. Ngay cả khi tôi không chạy 'TestWhichIAmNotRunning', ReSharper sẽ đánh giá' InfiniteValues', nó sẽ trả về '1' (gần như) mãi mãi. - - - - - 'public static IEnumerable InfiniteValues ​​{get {while (DateTime.Now! = DateTime.MinValue) trả về 1; }} [Test, TestCaseSource ("InfiniteValues")] public void TestWhichIAmNotRunning (int value) {} ' –

Trả lời

1

Bạn có thể thực hiện việc này bằng cách di chuyển các nguồn của bạn thành một phương thức trợ giúp và gọi chúng trong các phương pháp thiết lập cho mỗi bộ kiểm tra không? Tôi thường có một tập hợp các phương thức trợ giúp trong bộ thử nghiệm tích hợp của mình để thiết lập dữ liệu được chia sẻ cho các thử nghiệm khác nhau. Tôi chỉ gọi các phương thức trợ giúp mà tôi cần cho bộ ứng dụng hiện tại trong [Thiết lập]

+0

Bạn có thể làm điều đó, nhưng sau đó làm thế nào bạn sẽ sử dụng thuộc tính TestCaseSource để gán nguồn trường hợp thử nghiệm cho các phương thức? Tôi đã nhắm đến việc sử dụng thuộc tính TestCaseSource vì nó sẽ xử lý mảng đối tượng để dịch mảng tham số và làm cho việc thử nghiệm mô-đun hơn. – Anshul

+0

Có vẻ như là một ý tưởng hay, nhưng nó sẽ không hoạt động với thuộc tính nguồn TestCase. Tôi cũng đã thử di chuyển nó đến hàm tạo của lớp thử nghiệm nhưng có vẻ như TestCaseSource được đánh giá rất sớm. Đây là một nỗi đau thực sự cho các bài kiểm tra tích hợp sử dụng TestCaseSources ánh xạ từ cơ sở dữ liệu. –

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