Tôi đã viết mã gọi API ứng dụng khách của Jersey mà lần lượt gọi một dịch vụ web nằm ngoài tầm kiểm soát của tôi. Tôi không muốn thử nghiệm đơn vị của mình gọi dịch vụ web thực tế.Làm cách nào để mã đơn vị thử nghiệm gọi API ứng dụng khách của Jersey?
phương pháp tốt nhất để viết một bài kiểm tra đơn vị cho mã mà các cuộc gọi của khách hàng API Jersey là gì? Tôi có nên sử dụng API máy chủ Jersey để viết dịch vụ web JAX-RS và sau đó sử dụng Khung kiểm tra Jersey cho thử nghiệm đơn vị không? Hoặc tôi có nên thử các cuộc gọi dịch vụ web Jersey không? Tôi có quyền truy cập vào JMock. Hay tôi nên thử cách tiếp cận khác?
Trong nghiên cứu của tôi, tôi thấy this discussion mô tả tùy chọn khác nhau, nhưng tôi đã tìm thấy một giải pháp hoàn chỉnh. Có bất kỳ ví dụ mã nào có sẵn cho thấy cách tiếp cận JUnit được đề xuất không? Tôi không thể tìm thấy bất kỳ tài liệu nào trong tài liệu của Jersey.
Đây là mã nguồn có liên quan:
public String getResult(URI uri) throws Exception {
// error handling code removed for clarity
ClientConfig clientConfig = new DefaultClientConfig();
Client client = Client.create(clientConfig);
WebResource service = client.resource(uri);
String result = service.accept(accept).get(String.class);
return result;
}
Dưới đây là ví dụ về mã kiểm tra Tôi muốn vượt qua. Tôi muốn kiểm tra (1) truyền vào một URI hợp lệ và nhận được một chuỗi hợp lệ trở lại và (2) chuyển vào một URI không hợp lệ (vì bất kỳ lý do gì - không thể truy cập hoặc không được phép) và nhận lại một ngoại lệ.
@Test
public void testGetResult_ValidUri() throws Exception {
String xml = retriever.getResult(VALID_URI);
Assert.assertFalse(StringUtils.isBlank(xml));
}
@Test(expected = IllegalArgumentException.class)
public void testGetResult_InvalidUri() throws Exception {
retriever.getResult(INVALID_URI);
}
Mọi thứ ở trên là mô tả đơn giản về mã của tôi. Trong thực tế, có một lớp trên đầu trang chấp nhận hai URI, đầu tiên cố gắng gọi URI đầu tiên và nếu URI đó thất bại thì nó sẽ cố gắng gọi URI thứ hai. Tôi muốn có các bài kiểm tra đơn vị bao gồm (1) URI đầu tiên thành công, (2) URI đầu tiên không thành công và URI thứ hai thành công, và (3) cả hai URI đều thất bại. Mã này là đủ phức tạp mà tôi muốn thử nghiệm các kịch bản khác nhau này bằng cách sử dụng JUnit, nhưng để thực hiện điều này, tôi cần phải chạy các dịch vụ web thực sự tồn tại hoặc giả lập các cuộc gọi API khách hàng Jersey.
gì chính xác làm bạn muốn kiểm tra trong phương pháp này? Các tiêu chuẩn là gì, bài kiểm tra đó được thông qua? – dbf
Vâng, nếu bạn muốn làm bài kiểm tra đơn vị thì bạn phải có các dịch vụ chức năng thích hợp. – iDroid
@dbf Tôi đã cập nhật câu hỏi mà tôi muốn kiểm tra (1) chuyển vào một URI hợp lệ và nhận lại một chuỗi hợp lệ và (2) chuyển vào một URI không hợp lệ (vì bất kỳ lý do gì - không thể truy cập hoặc không được phép) và nhận một ngoại lệ trở lại. – BennyMcBenBen