Ну, мне пришлось создать экземпляр Controller, чтобы протестировать его. Более того, мне нужно было установить в этом контроллере некоторые поля, которые не являются бобами Spring.
Я нашел несколько способов решения:
- ReflectionTestUtils.setField ()
- Создание конструктора в контроллере и его автоматическое подключение
Вот так:
@Autowired
public Controller(Player player) {
this.player = player;
}
вышеописанный метод на самом деле не работает для меня, потому что я не могу выполнить автоматическое подключение, так как Player не является Spring Bean.
- Создание конструктора в контроллере, а НЕ его автоматическое подключение
Таким образом:
public Controller() {
}
public Controller(Player player) {
this.player = player;
}
Кроме того, мне нужно создать конструктор без аргументов. Без этого выдается несколько исключений, например, «Не удалось загрузить ApplicationContext» .
Итак, в конце концов, я решил использовать последний метод, и при тестировании я просто создаю экземпляр контроллера следующим образом:
public class ControllerTest {
private Player player = new Player();
private Controller controller = new Controller(player);
}
Что я в основном хочу знать , если я все делаю правильно. И если есть другие способы установить поля (не являющиеся Spring Beans) в Контроллере и использовать этот Контроллер и его поля при тестировании.