Spring Boot关于测试类通过不同方式注入
正常开发时,在测试类中的注入一般使用
@Resource
@Autowired
Setter注入方式
1 @SpringBootTest 2 @RunWith(SpringRunner.class) 3 public class TestDemo { 4 public DataSource dataSource; 5 @Autowired 6 public void setDataSource(DataSource dataSource) { 7 this.dataSource = dataSource; 8 } 9 @Test 10 public void test() throws Exception{ 11 System.out.println(dataSource.getConnection()); 12 } 13 }
构造器注入方式(失败)
1 @SpringBootTest 2 @RunWith(SpringRunner.class) 3 @RequiredArgsConstructor 4 public class TestDemo { 5 public final DataSource dataSource; 6 @Test 7 public void test() throws Exception{ 8 System.out.println(dataSource.getConnection()); 9 } 10 }
报错原因:
需要public修饰并且构造函数中不允许携带参数
而不适用Lombok注解的构造器注入的代码如下:
1 @SpringBootTest 2 @RunWith(SpringRunner.class) 3 public class TestDemo { 4 public final DataSource dataSource; 5 6 public TestDemo(DataSource dataSource) { 7 this.dataSource = dataSource; 8 } 9 10 @Test 11 public void test() throws Exception{ 12 System.out.println(dataSource.getConnection()); 13 } 14 }
如上所示构造器注入中必定会携带参数,不满足测试类的需求,将会抛出org.junit.runners.model.InvalidTestClassError: Invalid test class ‘xxxx’的错误
所以老老实实使用@Resource @Autowired或者Setter注入吧
🤭
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具