Поддерживает ли Mockito интерфейс @Any @Inject Instance <>? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть метод init (), который использует внедренный частный экземпляр <>.Как я могу проверить этот класс, используя JUnit или Mockito?Я попытался создать какой-то фальшивый класс и добавить его в список и установить этот список в своем личном поле, но у меня есть эта ошибка

java.lang.IllegalArgumentException: Невозможно установить поле javax.enterprise.inject.Instance......

MyClass это:

@Singleton
@Startup
public class HandlerManager {

    @Any
    @Inject
    private Instance<RollbackHandler<RollbackData>> handlers;

    private RollbackHandler<RollbackData> rollbackHandler;


    @PostConstruct
    public void init() {
        for (RollbackHandler<RollbackData> bean : handlers) {

//do something

            }
        }
    }

1 Ответ

0 голосов
/ 04 марта 2019

Любая аннотация не обрабатывается фреймворками, если вы не используете пользовательскую работу.вам нужно будет определить все эти зависимости как mocks в вашем тесте с помощью @Mock и вызвать injectMocks () до тестовых методов, таких как setup ().Это проблема, состоящая из нескольких частей.

  • Использование инжектора конструктора, инъекция поля - зловы по-прежнему сможете комментировать конструктор с помощью @ Inject.
...