Тест контроллера игрового фреймворка - Нет привязки к реализации <classname> - PullRequest
0 голосов
/ 09 октября 2018

Я хотел бы написать тест для класса контроллера.Класс контроллера принимает объект службы в качестве параметра конструктора.Добавлена ​​аннотация @Inject в конструктор класса обслуживания.

class AssociateService @Inject()(configuration: Configuation){...}

Параметр конструктора класса обслуживания - это объект пользовательской конфигурации, также созданный для приложения.Я также добавил @Inject в конструктор класса config.Теперь я получаю следующие типы сообщений об ошибках:

Нет привязки реализации для "className".

Не удалось найти подходящий конструктор в java.lang.Integer.Классы должны иметь либо один (и только один) конструктор, аннотированный @Inject, либо конструктор с нулевым аргументом, который не является частным.

Класс конфигурации имеет несколько параметров конструктора, это «базовые» типы (Int, Boolean) и один параметр - это пользовательский тип класса (className).Как мне сделать это связывание или это просто достаточно, чтобы аннотировать что-то еще?И почему написано это сообщение об ошибке конструктора?

1 Ответ

0 голосов
/ 10 октября 2018

Насколько я знаю, есть два способа с тестами и подсказками, с компромиссами:

  1. Не использовать инъекции полей, используя только инъекции конструктора и присваивание полей в конструкторе для введенных параметров.,Этот подход позволяет очень простое решение для тестирования, просто не используйте внедрение зависимостей в тестах.Но все ваши классы должны иметь возможность создания с новым оператором в тестовых случаях ...

Ps.Конечно, вы можете определить необязательный конструктор и использовать инъекции полей, но это не очень понятное решение.

Создание правильного модуля с инъекционными интерфейсами, связывающего его реализации с каждым тестом или группой похожих тестов.Иногда такой подход занимает много ненужного рабочего времени.

Вы должны разработать свое программное обеспечение для обеспечения тестируемости.Иногда не каждую строку кода в проекте нужно тестировать, иногда не каждый код тестируется, вы должны отделить его от важных частей вашего программного обеспечения, которые требуют тестирования.Если вы разрабатываете свое программное обеспечение с единым принципом ответственности, то написание тестов намного проще ...

...