Spring引导测试(JUnit)中的java依赖注入方面方法
当我不使用我的CronLogService
时,我的Aspect方法工作,但是如果我注入它,我会出现以下错误:
No qualifying bean of type 'com.app.service.CronLogService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
我的方面方法:
@Aspect
@Component
@RequiredArgsConstructor
@EnableAspectJAutoProxy
@Slf4j
public class CronLoggerAspect {
private final CronLogService cronLogService;
@Around("@annotation(CronLogger)")
public Object trace(ProceedingJoinPoint joinPoint) throws Throwable {
String name = MethodSignature.class.cast(joinPoint.getSignature()).getMethod().getAnnotation(CronLogger.class)
.name();
log.debug("start CronLogger for {}", name);
....
}
}
我的服务:
@Service
@Transactional
@RequiredArgsConstructor
@Slf4j
public class CronLogServiceImpl implements CronLogService {
private final CronLogRepository cronLogRepository;
@Override
public CronLog create(CronLog cronLog) {
return cronLogRepository.save(cronLog);
}
...
}
我只有在我的JUnit测试(我的Springboot应用程序工作!!)中出现此错误:
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = {TaskService.class, CronLoggerAspect.class, CronLogService.class, CronLogRepository.class})
public class TaskTest {
@Autowired
private TaskService taskService;
@Test
void testCronLoggerSuccess() throws CronException {
taskService.testCronLogger("test Success");
}
}
我的测试服务:
@Service
@RequiredArgsConstructor
@Slf4j
public class TaskService {
@CronLogger(name = "unit test")
public void testCronLogger(String param) throws CronException {
log.info("testCronLogger for {}", param);
...
}
}
我的CronLogRepository
public interface CronLogRepository extends JpaRepository<CronLog, String> {
}
编辑:
//@RequiredArgsConstructor
@Slf4j
public class CronLogServiceImpl implements CronLogService {
@Autowired
private CronLogRepository cronLogRepository;
测试:没有“com”类型的合格bean。应用程序。存储库。CronLogRepository'可用:至少需要1个符合autowire候选资格的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
springboot:正常
@RequiredArgsConstructor
@Slf4j
public class CronLogServiceImpl implements CronLogService {
private CronLogRepository cronLogRepository;
测试:没有弹簧错误,但cronLogRepository
为空。所以cronLogRepository.save
返回一个java.lang.NullPointerException
springboot:java。lang.NullPointerException:null在CronLogServiceImpl.create
# 1 楼答案
可能错误在这一行,尝试用
@SpringBootTest
替换它,如果它有效,那么错误在上下文配置中。 我认为,您需要将CronLogServiceImpl
添加到要添加到上下文的类列表中这能解决你的问题吗?请在评论中告诉我