Là người mới bắt đầu trong Phát triển thử nghiệm tôi chỉ gặp phải một vấn đề. Lớp học thử nghiệm của tôi bắt đầu như sau:Thử nghiệm JUnit độc lập với Springs @Autowired
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@DirtiesContext
@ContextConfiguration(locations = {"/web-test.xml"})
public class XXTest {
@Autowired
XX xx;
@Autowired
HibernateTemplate template;
@Test
public void testSetGetXXValue() throws Exception {
final Map<String, YY> profilMap = new HashMap<String, YY>(2);
profilMap.put("1", new YY());
profilMap.put("2", new YY());
simpleCockpit.setValues(profilMap);
assertEquals(profilMap, simpleCockpit.getValues());
}
Như bạn thấy, phương pháp thử nghiệm đầu tiên thay đổi lớp học tự động XX. Điều đó ảnh hưởng đến tất cả các phương pháp thử nghiệm sau đây, dựa trên XX có các giá trị tự động.
Làm cách nào tôi có thể thử nghiệm getter và setter từ XX VÀ đảm bảo XX có giá trị tự động cho phần còn lại của các phương pháp thử nghiệm?
Suy nghĩ:
- Thiết lập lại các giá trị đúng ở phần cuối của phương pháp thử nghiệm. Xấu vì nếu getter/setter không hoạt động, điều này cũng sẽ không hoạt động.
- Đặt phương pháp thử nghiệm đầu tiên vào cuối lớp kiểm tra. Xấu vì điều đó làm cho các bài kiểm tra phụ thuộc vào thứ tự thực thi của chúng.
- Không kiểm tra bộ thu thập/setter của XX. Xấu vì getter/setter phải được kiểm tra như mọi phương thức.
Cảm ơn câu trả lời của bạn! I `m khá chắc chắn này có một giải pháp dễ dàng ... :)
EDIT: Về câu hỏi liệu kiểm tra đơn vị getters/setters hay không, tôi quyết định làm như vậy chủ yếu là vì những lý do statet tại http://www.sundog.net/sunblog/posts/should-we-test-getters-and-setters/.
@DirtiesTiếp theo chính xác là những gì tôi đang tìm kiếm. Cảm ơn. Tôi muốn autowire đậu này bởi vì nó là một DAO cung cấp dữ liệu thử nghiệm từ một cơ sở dữ liệu. – Steven