Tôi đang cố gắng tham gia thử nghiệm đơn vị với NUnit. Hiện tại, tôi đang viết một bài kiểm tra đơn giản để làm quen với cú pháp và cách kiểm thử đơn vị. Nhưng tôi không chắc liệu tôi có làm đúng với thử nghiệm sau đây hay không:Đây có phải là cách thử nghiệm đơn vị tốt để sử dụng chức năng khác, được kiểm tra để chuẩn bị cho thử nghiệm thực tế không?
Lớp học thử nghiệm chứa danh sách các chuỗi có chứa tên trái cây, nơi có thể thêm tên trái cây mới qua class_under_test.addNewFruit(...)
. Vì vậy, để kiểm tra chức năng của addNewFruit(...)
, trước tiên tôi sử dụng phương pháp để thêm chuỗi mới vào danh sách (ví dụ: "Pinapple") và, trong bước tiếp theo, hãy xác minh xem danh sách có chứa chuỗi mới này hay không. Tôi không chắc đây có phải là cách tốt để kiểm tra chức năng của phương pháp hay không, bởi vì tôi dựa vào đáp ứng của một chức năng khác (mà tôi đã thử nghiệm trong bài kiểm tra đơn vị trước đó).
Đây có phải là cách để kiểm tra chức năng này hoặc có giải pháp tốt hơn không?
public void addNewFruit_validNewFruitName_ReturnsFalse()
{
//arrange
string newFruit = "Pineapple";
//act
class_under_test.addNewFruit(newFruit);
bool result = class_under_test.isInFruitList(newFruit);
//assert
Assert.That(!result);
}
Tuyệt đối ... nếu tất cả các kết hợp thử nghiệm làInFruitsList đều tốt, và chúng là tác giả của mã đó, thì nó đáng tin cậy đối với các thử nghiệm khác ... Giống như chúng ta "dựa" vào C# và NUnit ... – DRapp
Đúng rồi. Bạn luôn luôn cần phải tìm sự cân bằng giữa viết quá ít/quá chung chung kiểm tra và lặn vào thử nghiệm cho dù 'int a = 5' thực sự gán giá trị. Nó luôn luôn lành mạnh hơn để giả định CLR, mã bên thứ 3 và mã thử nghiệm của bạn hoạt động, hơn là hoang tưởng và kiểm tra mọi thứ di chuyển. –
Cảm ơn cả hai! Bây giờ tôi cảm thấy an toàn hơn nhiều, biết rằng nó được "cho phép" dựa vào các bài kiểm tra của riêng mình. – DIF