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

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

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

User.java

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

    //constructor + getters and setters
}

UserContrell3.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);
    }
}

在下class,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);
    }
}

不过进入测试classUserTest.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 class