2014-11-25 2 views
0

У меня есть тест блока установлен следующим образом:Spring инъекционные ресурс, используемый статический метод

  1. Unit Test с помощью Mockito работает и создает объект (класс не используется Spring)
  2. Объект вызывает статический метод в полезности класса (рессоры) под названием TimeUtil во время его строительства
  3. TimeUtil имеет поле под названием TimeService (статический компонент Spring), который извлекает то время

Workflow: Unit Test -> Crea te Object -> вызов статического метода в TimeUtil -> время выборки из TimeService

Этот рабочий процесс отлично работает в производстве, однако было сложно проверить, по какой-то причине TimeService в TimeUtil всегда имеет значение null. Предполагается, что Spring будет внедрять экземпляр TimeService во TimeUtil во время выполнения.

Может ли кто-нибудь сообщить, почему мой TimeService продолжает возвращаться как null?

Я попытался использовать Mockito для захвата вызова статического метода, но это не сработало, аналогично, я не могу вставлять TimeService в класс объектов, поскольку это статически вызывает TimeUtil.

+0

Покажите нам код для 'TimeUtil' и объясните, как вы сделали Spring что-то в статическом коде; Обычно Spring работает только на бобах, которые он создал сам. –

ответ

0

Вам необходимо просмотреть конфигурацию Spring, чтобы узнать, как вы (или кто-то из вашей команды) сделал пружинную проволоку вверх по статическому TimeService. Обычно Spring работает только с бобами, которые он создал. Поэтому глобальные переменные и статические методы не поддерживаются. Кто-то должен иметь письменный код, чтобы сделать инъекцию в этом случае.

Покажите нам этот код, и мы сможем помочь вам улучшить его, чтобы обеспечить единичные тесты.

Смежные вопросы