Testes de unidade Spring @Around AOP methods
Eu posso testar a maioria das minhas classes Spring sem precisar fazer Spring "stuff".
Eu posso teste de unidade @ Antes dos métodos de aconselhamento sem usar o Spring também:
Exemplo de código:
@Before("execution(* run(..)) && " + "" +
"target(target) && " +
"args(name)")
public void logName(Object target, String name) {
logger.info("{} - run: {}", target, name);
}
Exemplo de teste:
@Test
public void testLogName() {
aspect.setLogger(mockLogger);
aspect.logName(this,"Barry");
assertTrue(mockLogger.hasLogged("TestAspect - run: Barry"));
}
No entanto, o aconselhamento @Around lida com um objeto ProceedingJoinPoint:
@Around("com.xyz.myapp.SystemArchitecture.businessService()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
// start stopwatch
Object retVal = pjp.proceed();
// stop stopwatch
return retVal;
}
Eu não sei como instanciar um objeto ProceedingJoinPoint. Como faço para testar essa classe sem iniciar um contexto de aplicativo inteiro do Spring?