Kata #3: BankAccount - tầng DAO
Điều kiện tiên quyết: Hoàn thành Kata #2.
Đề bài: Chọn lấy phiên bản tốt nhất trong các lần làm Kata#2 để dựng tầng DAO cho phiên bản đó. Từ phiên bản đã chọn, ta có API của các lớp DAO cần viết. Giữ nguyên khung này và viết test theo API có sẵn đó, sao cho phần service đã viết có thể nối với tầng DAO của Kata này.
Hướng dẫn:
Các em tự tổ chức thứ tự và nội dung các test. Để không phải ghi nhớ trong đầu kế hoạch test, có thể dùng 1 file text, chẳng hạn todo.txt, để ghi kế hoạch test. Nội dung todo.txt gồm các gạch đầu dòng mô tả vắn tắt các case cần test, xếp theo thứ tự muốn viết test. Trước khi bắt đầu code thì lập kế hoạch vào file này, trong quá trình làm, nếu thay đổi kế hoạch thì lại sửa file. Đây sẽ là cách các em sẽ sử dụng sau này cho việc lập kế hoạch trong khi thực hiện các dự án TDD.
Chú ý để bộ test phủ hết các method và trường hợp có thể xảy ra.
Để test DAO, ta không mock CSDL mà test thẳng với CSDL theo kiểu blackbox. Với mỗi test, ta set up một CSDL chuyên dụng với các table và record cần thiết cho test đó.
Mục đích là để các test không ảnh hưởng gì đến nhau và lần nào chạy một test nào đó cũng ở tình trạng CSDL phù hợp với test đó.
Để các test có thể chạy nhanh, nên dùng các loại CSDL chạy trong bộ nhớ (in-memory DB) như H2.
Gợi ý cách dùng DBUnit (môi trường Java):
Ví dụ mini dùng DBUnit để test DAO Chú ý xem cách setup CSDL trước mỗi test (tạo mới / xoá sạch, insert dữ liệu mới).
Ví dụ DBUnit cộng thêm Hibernate và Spring của Ngô Thành Lê