2013-07-24 18 views
5

Tôi cần viết một số test với JUnit để kiểm tra các lớp truy cập cơ sở dữ liệu, một số khá đơn giản (chọn danh sách các mục).Junit: test query classes

Bây giờ câu hỏi của tôi là, một số điều mà tôi cần lưu ý khi viết bài kiểm tra của mình là gì?

Ví dụ: lớp cơ sở dữ liệu tìm nạp các mục từ bảng, tôi có thể kiểm tra nó với id hợp lệ, id không hợp lệ nhưng còn gì khác?

Vì vậy, để tóm tắt: làm thế nào để bạn kiểm tra tốt nhất các lớp truy vấn của bạn?

Nó đã được một thời gian kể từ khi tôi viết bất kỳ thử nghiệm vì vậy tôi là một chút gỉ :)

Trả lời

2

Nếu bạn chỉ cần kiểm tra các truy vấn SQL, bạn có thể

  • Run mỗi một trong các truy vấn trong một kịch bản thành công để kiểm tra xem bạn có những điều khoản đúng
  • (như bạn nói) chọn id hợp lệ
  • Chèn bản ghi trùng lặp (bằng cách PK hay khóa duy nhất)
  • Đảm bảo bạn không thể đặt một nul l trong các trường không nullable.
  • Xóa id hợp lệ (nó nên không? Hay chỉ cần bỏ qua rằng hàng không tồn tại?)
  • Validate bất kỳ kiểm tra mà bạn có trong một cột
  • Có lẽ bất kỳ xác nhận bạn phải ngăn chặn một String được lưu trữ trong một cột varchar ngắn hơn?

Tôi chưa bao giờ thực hiện nhiều hơn điểm đầu tiên cho truy vấn, nhưng tôi có thể thấy một số giá trị trong việc thử nghiệm một số trường hợp bổ sung.

Một thực hành tốt cho loại thử nghiệm tích hợp này là có thể xóa DB chèn bất kỳ dữ liệu nào bạn cần cho mỗi bài kiểm tra, vì điều này sẽ đảm bảo rằng mỗi bài kiểm tra được phân lập. Nếu bạn đang sử dụng java, bạn có thể sử dụng một khung công tác như DBUnit để thực hiện việc này. Một thực hành tốt nữa là việc xóa sạch DB và tạo dữ liệu thử nghiệm được thực hiện trước bạn chạy từng thử nghiệm thay vì sau. Điều này có lợi ích là nếu một thử nghiệm thất bại, bạn sẽ có DB trong trạng thái khi kiểm tra thất bại. Một số thứ khác mà bạn có thể kiểm tra là bất kỳ loại chuyển đổi dữ liệu nào bạn thực hiện ở cấp DAO (ví dụ: cột varchar với danh sách các giá trị được phân tách bằng dấu phẩy và bạn chuyển đổi nó thành Danh sách, thay vì để nó thành chuỗi). .

+1

Một số gợi ý rất hữu ích :) Nếu đây là câu trả lời hay nhất, tôi sẽ chấp nhận nó nhưng tôi sẽ đợi một chút để xem có thêm mẹo nào không :) nhưng cảm ơn trong mọi trường hợp :) – darkownage