Đó là bình thường để thấy chức năng đăng nhập vào mãChúng ta có nên đơn vị kiểm tra đăng nhập?
public class A {
private static final Log LOG = LogFactory.getLog(A.class);
và sử dụng
} catch (Exception e) {
LOG.error(e.getMessage(), e);
throw e;
}
nhưng tôi chưa bao giờ thấy thậm chí kiểm tra đơn vị duy nhất cho mã như vậy.
Tắt khóa học Tôi thực hiện kiểm tra loại trừ ngoại lệ và loại ngoại lệ, nhưng tôi có nên viết kiểm tra để kiểm tra thông tin đăng nhập không? Tôi có xu hướng nghĩ rằng đăng nhập là một phần khác của hành vi hệ thống, do đó, nó thoát khỏi một cách hợp lý để trang trải nó trong các thử nghiệm.
Giả sử rằng tôi nên đề cập đến nó, có nghĩa là tôi nên thay đổi mã ban đầu của mình để chèn nhật ký giả và kiểm tra phương thức "lỗi" đã được gọi với thông báo dự kiến. Nhưng phải làm gì nếu lớp ban đầu của tôi là dịch vụ và nó được khởi tạo bởi mùa xuân, tôi có nên tiêm một số logger cũng như các phụ thuộc khác không?
là nó cùng một cách tiếp cận mà tôi đã đề cập trong câu hỏi của tôi. Nhưng đối với tôi nó vẫn chưa rõ phải làm gì trong trường hợp dịch vụ mùa xuân vì thường LOG tạo ra cho mỗi lớp, vì vậy nó là lớp cụ thể và tôi không thể làm cho nó như là một singleton. –
Nếu bạn không có bất kỳ sự kiểm soát mã nào để khởi tạo đối tượng Nhật ký, thật khó để kiểm tra hành vi, bởi vì bạn không thể sử dụng Nhật ký mô phỏng. Bạn có thể cho phép nó đăng nhập với đối tượng Log thực, sau đó kiểm tra xem một thư đã được đăng nhập chưa. Tuy nhiên, thật khó để tự động hóa! –
Không, tôi đồng ý với bạn rằng mã đăng nhập phải được kiểm tra. Nó có nghĩa là chúng ta nên có setter cho LOG, vì vậy nó sẽ có thể vượt qua thử nghiệm đăng nhập thử nghiệm, nhưng phải làm gì trong trường hợp dịch vụ mùa xuân. Tôi đang suy nghĩ về 2 cách có thể: 1) có setter nhưng gọi chỉ từ test (có thể khó hạn chế tầm nhìn như vậy kể từ mùa xuân có thể tự động tiêm), 2) tiêm logger qua mùa xuân, nhưng trong trường hợp này thật khó để khởi tạo trình ghi nhật ký thích hợp. –