2015-06-14 16 views
5

Xin chào Tôi là người mới với Nunit và tôi đang chuyển một loạt các đối tượng đến một TestCase như một TestCaseSource. Đối với một số lý do mặc dù Nunit có vẻ chạy thử nghiệm đầu tiên không có tham số truyền cho nó mà kết quả trong một sản lượng bỏ qua:Nunit chạyTestCase với một TestCaseSource với lần lặp đầu tiên không có tham số? Tại sao?

Các thử nghiệm:

private readonly object[] _nunitIsWeird = 
{ 
    new object[] {new List<string>{"one", "two", "three"}, 3}, 
    new object[] {new List<string>{"one", "two"}, 2} 

}; 

[TestCase, TestCaseSource("_nunitIsWeird")] 
public void TheCountsAreCorrect(List<string> entries, int expectedCount) 
{ 
    Assert.AreEqual(expectedCount,Calculations.countThese(entries)); 
} 

TheCountsAreCorrect (3 bài kiểm tra), Không: Một hoặc nhiều bài kiểm tra đứa trẻ có lỗi TheCountsAreCorrect(), Ignored: Không có đối số được cung cấp TheCountsAreCorrect (System.Collections.Generic.List 1[System.String],2), Success TheCountsAreCorrect(System.Collections.Generic.List 1 [System.String], 3), Success

Vì vậy, các thử nghiệm đầu tiên được bỏ qua vì không có tham số, nhưng tôi không muốn chạy thử nghiệm này, bao giờ hết, nó không có ý nghĩa và nó mucking lên sản lượng thử nghiệm của tôi. Tôi đã cố gắng bỏ qua nó và thiết lập đầu ra thử nghiệm một cách chính xác nhưng nó trở lại khi tôi chạy tất cả các bài kiểm tra một lần nữa.

Có điều gì tôi thiếu, tôi đã xem xét ở khắp mọi nơi.

Trả lời

6

TestCaseTestCaseSource làm hai việc khác nhau. Bạn chỉ cần xóa thuộc tính TestCase.

[TestCaseSource("_nunitIsWeird")] 
public void TheCountsAreCorrect(List<string> entries, int expectedCount) 
{ 
    Assert.AreEqual(expectedCount,Calculations.countThese(entries)); 
} 

Các TestCase thuộc tính là để cung cấp dữ liệu nội tuyến, vì vậy NUnit đang nỗ lực để cung cấp không có thông số để thử nghiệm, đó là thất bại. Sau đó, nó xử lý thuộc tính TestCaseSource và tìm kiếm dữ liệu mà nó cung cấp và cố gắng truyền cho thử nghiệm, hoạt động chính xác.

Là một lưu ý phụ, nói đúng ra, các tài liệu cho thấy rằng bạn cũng nên đánh dấu kiểm tra TestCaseSource của bạn với một thuộc tính Test như dưới đây, tuy nhiên tôi chưa bao giờ thấy điều này cần thiết:

[Test, TestCaseSource("_nunitIsWeird")] 
public void TheCountsAreCorrect(List<string> entries, int expectedCount) 
+0

Cảm ơn forsvarir, đó là sự hiểu lầm của tôi về văn bản có nghĩa là tôi đã sử dụng TastCase thay vì Kiểm tra. Cảm ơn bạn – Phil

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