Tôi có một lớp thử nghiệm được kiểm tra với nhiều kiểm tra đơn vị thường kiểm soát việc tạo các email tùy chỉnh. Ngay bây giờ lớp học có rất nhiều bài kiểm tra mà phụ thuộc vào các yếu tố (s) được sử dụng trong lớp parametrized, dòng chảy của các bài kiểm tra là như nhau cho mỗi bài kiểm tra. Các ví dụ về một bài kiểm tra:Nếu các câu lệnh trong các thử nghiệm
@Test
public void testRecipientsCount() {
assertEquals(3, recipientsCount);
}
tôi phải bổ sung thêm funcionality đến lớp email của tôi mà bổ sung thêm một số email nội bộ để danh sách người nhận, và điều đó chỉ xảy ra đối với một số trường hợp và điều đó dẫn đến vấn đề của tôi .
Cho phép nói rằng tôi muốn xác nhận số lượng thư được tạo. Đối với các thử nghiệm cũ nó là như nhau cho mỗi trường hợp, nhưng bây giờ nó khác nhau tùy thuộc vào trường hợp. Cách trực quan nhất đối với tôi là để thêm nếu phát biểu:
@Test
public void testRecipientsCount(){
if(something) {
assertEquals(3, recipientsCount);
}
else {
assertEquals(4, recipientsCount);
}
}
...
nhưng kinh nghiệm hơn đồng nghiệp của tôi nói rằng chúng ta nên tránh ifs trong lớp học thử nghiệm (và tôi kinda đồng ý về điều đó). Tôi nghĩ rằng thử nghiệm chia tách trên hai bài kiểm tra có thể làm việc, nhưng điều đó sẽ dẫn đến mã dự phòng trong cả hai lớp (tôi vẫn phải kiểm tra xem các thư không phải là vĩnh cửu đã được tạo, kích thước, nội dung, v.v.) hay không vài dòng được thêm vào cho một trong số chúng.
Câu hỏi của tôi là: làm cách nào để làm điều này vì vậy tôi không sử dụng nếu hoặc tải mã dự phòng (không sử dụng lớp được tham số sẽ tạo ra nhiều mã dự phòng hơn)?
'thêm một số phụ email nội bộ vào danh sách người nhận'. Danh sách các địa chỉ nội bộ đó có được đưa vào lớp không? Nếu vậy, bạn chỉ cần xóa danh sách đó cho hầu hết các bài kiểm tra và có một hoặc hai bài kiểm tra 'testInternalMail' DO điền danh sách đó –
Tôi không nghĩ rằng điều này là có thể với lớp kiểm tra Parametrized. Các trường hợp thử nghiệm được thêm vào mà bạn đề xuất sẽ chạy cho mọi bộ đối số và các xác nhận sẽ khác nhau đối với một số đối số. Giải pháp của bạn sẽ hoạt động mà không có lớp Parametrized, nhưng tôi muốn tránh điều đó. – Raidmaster
Bạn có thể thay đổi mã đã đăng của mình thành lớp kiểm tra hoàn chỉnh hơn (nhưng vẫn nhỏ và giả), vì vậy chúng tôi có thể hiểu cách bạn thiết lập thông số của mình? –