我用Springboot我想测试我的新定义注JUnit.
我原来的码我的 @CronLogger
定义的注解 importData
方法:
@Service
@RequiredArgsConstructor
@Slf4j
public class ImportTask {
@Async
@Scheduled(cron = "${import}")
@SchedulerLock(name = "import")
@CronLogger()
public void importData() {
...
}
}
我定义的注释:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CronLogger {
}
我的定义方面的方法:
@Aspect
@Component
@EnableAspectJAutoProxy
public class CronLoggerAspect {
private static final Logger log = LoggerFactory.getLogger(CronLoggerAspect.class);
@Around("@annotation(CronLogger)")
public Object trace(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("CronLogger");
log.debug("CronLogger");
return joinPoint.proceed();
}
}
我JUnit试验:
@Slf4j
@ExtendWith(MockitoExtension.class)
@Import(AnnotationAwareAspectJAutoProxyCreator.class) // activate aspect
class ImportTaskTest {
@InjectMocks
private ImportTask importTask;
@Test
void importData() throws JSchException, SftpException, SftpTransfertException {
// execute test
importTask.importData();
}
}
结果是确定的,但没装配加载静执行方面的方法码。