mongoTemplate注入为null

单元测试,使用 @Resource 或 @Autowired注入的对象为空,解决办法

1.依赖

  
        
            org.springframework.boot
            spring-boot-starter-data-mongodb
        
        
        
            org.projectlombok
            lombok
        

2.代码

遇到的bug: 注入的mongoTemplate 为null
​
问题分析:测试类和启动类的路径不一样,导致找不到启动类,需要手动指定启动类
​
例如:启动类的路径 com.demo.mongodb ,测试类的路径 com.demo
解决办法 :@SpringBootTest(classes = MongoApplication.class) 在注解里加上启动类的class文件
@SpringBootTest(classes = MongodbApplication.class)
//@RunWith(SpringRunner.class)注解是一个测试启动器,可以加载Springboot测试注解。
@RunWith(SpringRunner.class)
public class UserApplication {
​
    //注入MongoTemplate
    @Autowired
    private MongoTemplate mongoTemplate;
​
​
    //添加操作
    @Test
    public void create(){
        User user = new User();
        user.setName("老黄");
        user.setAge(18);
        user.setEmail("[email protected]");
        user.setCreateDate("2022-12-24");
        User insert = mongoTemplate.insert(user);
        System.out.println("MongoDB中存储的user:" + insert);
    }
}

实体类

@Data
@Document("User")
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
    private String email;
    private String createDate;
}

application.yml

spring:
  data:
    mongodb:
      uri: mongodb://127.0.0.1:27017/test

主启动

@SpringBootApplication
public class MongoApplication {
    public static void main(String[] args) {
        SpringApplication.run(MongoApplication.class,args);
    }
}

测试结果

mongoTemplate注入为null_第1张图片

 

你可能感兴趣的:(实战项目,mongodb,数据库)