繁体   English   中英

不能在测试类中使用 Autowired 但可以在实现类中使用它?

[英]Cannot use Autowired in a test class but able to use it in an implementation class?

我正在尝试测试一个 @Controller 类,其中有一个来自 pojo 的 List。 我可以在另一个 @RestController 类中使用 @Autowired 来连接控制器,但在同样的情况下我不能将它执行到测试中。

用户.java

@Data //from lombok
public class User  {
    private String Id;
    private String email;

    //constructor + getters and setters
}

用户控件3.java

@Controller
public class UserController {

    private List<User> userRepo = new ArrayList<>();

    public UserController() {}

    public List<User> readAll() {
        return userRepo;
    }

    public void add(User user) {
        userRepo.add(user);
    }
}

在下一堂课UserResource.java我可以做@Autowired

@RestController
@RequestMapping(UserResource.USER)
public class UserResource {
    public static final String USER = "/users";

    private UserController userController;

    @Autowired
    public UserResource(UserController userController) {
        this.userController = userController;
    }

    @GetMapping
    public List<User> readAll() {
        return userController.readAll();
    }

    @PostMapping
    public void addUser(@RequestBody User user) {
        userController.add(user);
    }
}

但是,进入测试类UserTest.java 我不能:

@SpringBootTest(classes = {cat.jhz.Main.MainApp.class})
@TestPropertySource("classpath:test.properties")
public class UserTest {

    // @Autowired **//NOT HERE** --> ERROR
    private UserController userRepo;

    @Autowired **//AND NOT HERE** --> ERROR
    public UserResource(UserController userController) {
        this.userController = userController;
    }

    @Test
    void testAddUserToUserController() {
        ...
    }

}

错误消息是无法自动装配。 未找到“UserController”类型的 bean。

任何的想法?

提前致谢!

简单但不是很好 - 将注释 @ComponentScan 添加到 UserTest 类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM