У меня очень простой класс AOP < /p>
// imports
@Component
@Aspect
@Slf4j
class aopClass {
pubic void log(Joinpoint jp) {
log.info("hi {} and {}", jp.getsignature(), jp.getSourceLocation());
}
}
< /code>
Теперь это работает, поэтому я попытался создать тестовый класс для этого.//imports
@ExtendWith(MockitoExtension.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class MyTest {
@InjectMocks
aopClass aopClass1= new aopClass();
JoinPoint joinPoint;
private static final org.slf4j.Logger log = mock(org.slf4j.LoggerFactory.getLogger(MyTest.class).getClass());
@BeforeAll
void setup(){
joinPoint = mock(JoinPoint.class);
when(joinPoint.getSignature()).thenReturn(null);
}
@Test
void log() {
aopClass1.log(joinPoint);
verify(joinPoint, times(1)).getSignature();
verify(joinPoint, times(1)).getSourceLocation();
verify(log, times(1)).info(anyString()); // always throws error here?
}
}
Поэтому, когда я запускаю его, это оставляет мне ошибку (ошибку внизу), говоря, что для вызова журнала нет никакого вызова, что странно, потому что я на самом деле вижу журнал в консоли, поэтому его нужно вызвать. Проверьте (log, times (1)). info (anyString (), any (), any ()); Но все еще не удачи.Wanted but not invoked:
log.info();
-> at ch.qos.logback.classic.Logger.info(Logger.java:584)
Actually, there were zero interactions with this mock.
Подробнее здесь: https://stackoverflow.com/questions/795 ... oing-error