Vì vậy, tôi có một mô-đun xác thực tôi đã viết cách đây một thời gian. Bây giờ tôi đang nhìn thấy các lỗi của cách của tôi và viết bài kiểm tra đơn vị cho nó. Trong khi viết bài kiểm tra đơn vị, tôi có một thời gian khó khăn để đưa ra tên tốt và khu vực tốt để kiểm tra. Chẳng hạn, tôi có những thứ như
- Yêu cầuLogin_should_redirect_when_not_logged_in
- Yêu cầuLogin_should_pass_ENC_when_logged_in
- Đăng nhập_should_work_when_given_proper_credentials
Cá nhân, tôi nghĩ nó hơi xấu, mặc dù nó có vẻ "phù hợp". Tôi cũng gặp khó khăn trong việc phân biệt giữa các thử nghiệm bằng cách chỉ quét qua chúng (tôi phải đọc tên phương thức ít nhất hai lần để biết điều gì vừa thất bại)
Vì vậy, tôi nghĩ rằng có thể thay vì viết các bài kiểm tra hoàn toàn kiểm tra chức năng, có thể viết một tập các bài kiểm tra bao gồm các tình huống.
Chẳng hạn, đây là một bài kiểm tra mà tôi đã nghĩ ra:
public class Authentication_Bill
{
public void Bill_has_no_account()
{ //assert username "bill" not in UserStore
}
public void Bill_attempts_to_post_comment_but_is_redirected_to_login()
{ //Calls RequiredLogin and should redirect to login page
}
public void Bill_creates_account()
{ //pretend the login page doubled as registration and he made an account. Add the account here
}
public void Bill_logs_in_with_new_account()
{ //Login("bill", "password"). Assert not redirected to login page
}
public void Bill_can_now_post_comment()
{ //Calls RequiredLogin, but should not kill request or redirect to login page
}
}
Đây có phải là một nghe nói về mô hình? Tôi đã thấy những câu chuyện chấp nhận và như vậy, nhưng điều này về cơ bản là khác nhau. Sự khác biệt lớn là tôi sẽ đưa ra các kịch bản để "buộc" các bài kiểm tra ra. Thay vì cố gắng tự tìm ra các tương tác có thể mà tôi cần kiểm tra. Ngoài ra, tôi biết rằng điều này khuyến khích các bài kiểm tra đơn vị không kiểm tra chính xác một phương thức và lớp. Tôi nghĩ rằng điều này là OK mặc dù. Ngoài ra, tôi biết rằng điều này sẽ gây ra sự cố cho ít nhất một số khung thử nghiệm, vì họ thường cho rằng các thử nghiệm độc lập với nhau và thứ tự không thành vấn đề (trong trường hợp này sẽ xảy ra).
Dù sao, đây có phải là một mô hình khuyến khích không? Hoặc, đây có phải là một sự phù hợp hoàn hảo cho các thử nghiệm tích hợp API của tôi thay vì thử nghiệm "đơn vị" không? Đây chỉ là một dự án cá nhân, vì vậy tôi mở các thử nghiệm có thể hoặc không thể thực hiện tốt.
_test
gắn thêm và sử dụng các bình luận để ghi chú những kết quả mà tôi mong đợi. Nếu đó là một dự án cá nhân, hãy tìm một số phong cách mà bạn cảm thấy thoải mái và tuân theo nó.