在学习redis的过程中,使用了spring提供的单元测试功能,但是出现了@Autowired不注入的问题,本篇博客主要说明了该问题出现的原因以及解决方法。
新建JunitTest
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ManageApplication.class)
class scheduledTest {
@Autowired
private ScheduleService scheduleService;
@Test
void scheduledTask() {
try {
scheduleService.scheduleUpload();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@runWith注解作用:
– @RunWith就是一个运行器
– @RunWith(JUnit4.class)就是指用JUnit4来运行
– @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环 境,以便在测试开始的时候自动创建Spring的应用上下文
– @RunWith(Suite.class)的话就是一套测试集合
SpringTest与JUnit等其他测试框架结合起来,提供了便捷高效的测试手段。而SpringBootTest 是在SpringTest之上的再次封装,增加了切片测试,增强了mock能力。
综上:
springboot测试步骤
直接在测试类上面加上如下2个注解@RunWith(SpringRunner.class)和@SpringBootTest就能取到spring中的容器的实例,如果配置了@Autowired那么就自动将对象注入。
再次运行,程序正常执行后结束。
参考
https://blog.csdn.net/qq_41051923/article/details/106919415