我正在尝试测试一个 @Controller 类,其中有一个来自 pojo 的列表。 我可以在另一个 @RestController 类中使用 @Autowired 来连接 Controller ,但在同样的情况下,我无法将其放入测试中。
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);
}
}
在下一个类中,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() {
...
}
}
错误消息是无法 Autowiring 。找不到“UserController”类型的 bean。
有什么想法吗?
提前致谢!
最佳答案
简单但不太好 - 将注释 @ComponentScan 添加到 UserTest 类
关于java - 无法在测试类中使用 Autowired,但可以在实现类中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60966728/