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注入吧

🤭

posted @   ZZ4582  阅读(1230)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示