Tôi hiện đang làm việc trên một số công cụ giám sát bằng cách sử dụng aspectj. Bởi vì công cụ này nên là công nghệ độc lập (càng nhiều càng tốt), tôi không sử dụng Spring để tiêm. Nhưng tôi muốn các khía cạnh của tôi được kiểm tra đơn vị.Làm thế nào để thử một khía cạnh
Aspect dụ:
@Aspect
public class ClassLoadAspect {
private Repository repository;
public ClassLoadAspect() {
repository = OwlApiRepository.getInstance();
}
@After("anyStaticInitialization()")
public void processStaticInitilization(JoinPoint jp) {
Class type = jp.getSourceLocation().getWithinType();
if (type.isInterface()) {
repository.storeInterfaceInitialization(type);
} else if (type.isEnum()) {
repository.storeEnumInitialization(type);
} else {
repository.storeClassInitialization(type);
}
}
@Pointcut("staticinitialization(*) && !within(cz.cvut.kbss.odra..*)")
public void anyStaticInitialization() {
}
public Repository getRepository() {
return repository;
}
public void setRepository(Repository repository) {
this.repository = repository;
}
}
Tuy nhiên, tôi thực sự không biết, làm thế nào để xây dựng thử nghiệm đơn vị (các lĩnh vực kho nên được chế giễu (sử dụng Mockito)), Nhưng tôi không có sự sáng tạo khía cạnh dưới sự kiểm soát, do đó Tôi không thể đặt phụ thuộc theo cách thủ công. Tôi nên gọi gì để nhận được cá thể? Hoặc có một số kịch bản khác như thế nào để kiểm tra đơn vị khía cạnh khía cạnh.
Cảm ơn.
Điều tôi không thích trong giải pháp của mình: thay thế toàn bộ phương pháp tĩnh khó kiểm tra - tôi phải đặt lại kho lưu trữ theo cách thủ công (thay vì đặt mô hình mới). Tôi cũng phải tạo ra một người giữ giả để truy cập vào đối tượng kho lưu trữ giả. Điều thứ ba là tôi không thích ôn hòa với bytecode để thiết lập mô hình, tôi thực sự nghĩ rằng điều này phải được thực hiện bằng các phương tiện chuẩn của ngôn ngữ (nếu nó không thể, nó cho thấy sự thiếu hụt trong aspectj thiết kế). Nhưng từ mã, giải pháp của bạn có thể làm (ít nhất là không cần chủ) :-). – malejpavouk
Điểm được lấy, tiền thưởng là của bạn. Cảm ơn :-) – malejpavouk
Xin lỗi vì tiếng ồn. Tôi đã quyết định thêm nhận xét vào câu trả lời của mình vì số lượng ký tự có sẵn cho nhận xét quá nhỏ. Nhưng cảm ơn dù sao để trao cho tôi tiền thưởng. :) – kriegaex