Không có hỗ trợ cho truy vấn HQL trong các bài kiểm tra đơn vị, nhưng chúng tôi đang làm việc trên đó. Nhưng bạn không nên làm các xét nghiệm kiên trì với mocks. Kiểm tra sự bền bỉ nên được thực hiện đối với một cơ sở dữ liệu trong một thử nghiệm tích hợp.
Tôi thường di chuyển truy vấn HQL đến lớp miền dưới dạng phương thức truy vấn tĩnh. Bằng cách này, họ dễ dàng thử nghiệm trong một bài kiểm tra đơn vị của một bộ điều khiển, dịch vụ, vv và sau đó tôi thử nghiệm phương thức này như một phần của bài kiểm tra tích hợp lớp miền.
Ví dụ tôi muốn có
class User {
String username
String password
...
static List findAllUsersBlahBlah(String foo, boolean bar) {
executeQuery('from User u where ...')
}
}
Sau đó, trong một thử nghiệm đơn vị tôi có thể chế nhạo rằng phương pháp với dữ liệu giả kể từ khi tôi không quan tâm đến sự kiên trì trong một thử nghiệm đơn vị điều khiển - Tôi biết rằng nó được kiểm tra đúng cách ở địa điểm chính xác và tôi muốn tập trung vào các lớp dưới kiểm tra, không cộng tác viên của nó:
def users = [new User(...), new User(...)]
User.metaClass.static.findAllUsersBlahBlah = { String foo, boolean bar -> users }
Nguồn
2012-02-17 15:15:44
Cảm ơn, mà thực sự giúp – LiCheng
tôi đã cố gắng giải pháp khác đầu tiên nhưng cuối cùng phải sử dụng cái này, nhờ việc chuyển đổi metaclassing –
có thể gây ra các vấn đề khác nếu bạn không làm sạch sau khi sử dụng. bạn đã được cảnh báo. –