2009-05-15 39 views
33

Sử dụng Nunit, tôi muốn có thể viết một thử nghiệm sẽ đọc tất cả các tên tệp trong một thư mục cụ thể và tạo một kiểm tra cho mỗi tệp.Tự động tạo các thử nghiệm trong NUnit

Tôi có thể dễ dàng viết một phương pháp kiểm tra quét qua thư mục và thực hiện tất cả các kiểm tra, nhưng khi tôi chạy NUnit, tôi muốn có thể xem từng bài kiểm tra riêng lẻ.

Điều này có thể thực hiện được không?

Trả lời

46

Tôi đã tìm thấy một cách phù hợp với mục đích của tôi

Có một trường hợp kiểm tra, và đánh dấu nó với TestCaseSource thuộc tính như vậy

[Test, TestCaseSource("GetTestCases")] 
public void TestFile(string filename) 
{ 
    //do test 
} 

Sau đó viết các GetTestCases để đọc tất cả các tên tệp trong thư mục

private static string[] GetTestCases() 
{ 
    return GetAllFilesInCurrentDirectory(); 
} 

Sau đó, khi tôi bắt đầu NUnit tôi nhận được danh sách các bài kiểm tra cần chạy (được liệt kê dưới TestFile).

+0

Đẹp và đơn giản. Thuộc tính cũng khá linh hoạt, như được mô tả trong tài liệu (tham khảo v2.5.2) tại đây: http://nunit.com/index.php?p=testCaseSource&r=2.5.2 –

+0

NUnit rocks !! Nó làm mọi việc đơn giản hơn. Tôi đang sử dụng tính năng này cho các bài kiểm tra tích hợp – AksharRoop

+0

Làm thế nào để làm cho nó hoạt động trong thử nghiệm ReSharper á hậu? Nó cho thấy lỗi và thất bại trong hộp thư thay vì hiển thị ngăn xếp trong phiên kiểm tra – moudrick

1

Nếu bạn không sẽ được thêm các tập tin vào thư mục đó theo thời gian và có một tập các tên tập tin để vượt qua trong như một đầu vào một bài kiểm tra chung, hãy thử sử dụng RowTest NUnit extension (một phần của std distrib bài v2. 4.7) - Bạn có thể xem từng trường hợp thử nghiệm - kết hợp đầu vào riêng lẻ trong GUI được nhóm theo một nút duy nhất.

Nếu bạn đang sẽ thêm tệp vào thư mục đó, tôi sẽ viết một NUnit TestCase lặp lại trên danh sách các tệp thu được trong thời gian chạy và gọi phương thức thử chung với mỗi tệp. Sử dụng collecting parameter để thu thập tên tệp thử nghiệm không thành công - ở cuối bạn xác nhận. Bạn sẽ không thể xem từng trường hợp thử nghiệm riêng lẻ nhưng bạn có mã kiểm tra đơn giản có thể đọc được.

Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles)) 
+0

Trừ khi bạn có hàng nghìn bài kiểm tra .... có thể mất đến vài giờ. – eocron

0

Tôi biết điều này hơi mơ hồ một chút nhưng trước đây tôi đã sử dụng tập lệnh để tạo mã cho tôi mà sau đó tôi có thể thực thi dưới dạng các trường hợp thử nghiệm riêng lẻ.

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