Аннотация @InjectMock от Mockito - PullRequest
       22

Аннотация @InjectMock от Mockito

2 голосов
/ 22 сентября 2011

Я немного запутался с аннотациями @RunWith(MockitoJUnitRunner.class) и @InjectMock и тем, как они связаны друг с другом. Согласно моему пониманию, давая @RunWith(MockitoJUnitRunner.class), нам не нужно инициализировать макет, как mock(ABC.class).

С другой стороны, @InjectMocks автоматически вводит макет с помощью геттеров и сеттеров. В документации сказано:

@InjectMocks в настоящее время он поддерживает только инъекцию сеттера. Если вы предпочитаете инъекцию в конструктор - пожалуйста, добавьте патч ....

Чего я не понимаю, так это того, что когда я удаляю @InjectMocks ниже, я получаю исключение nullpointer для тестов, поскольку зависимость равна нулю Означает ли это, что поддержка на основе construtor поддерживается? Или это как-то связано с @RunWith(MockitoJUnitRunner.class)

Вот код

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
    @Mock
    private Dependency dependency;

    @InjectMocks
    private MyClass cls = new MyClass(dependency);
    //...
}

class MyClass {
    private Dependency dependency;

    MyClass(Dependency dependency) {
        this.dependency = dependency;
    }
    //...
}

1 Ответ

1 голос
/ 23 сентября 2011

Начиная с последней версии, Mockito поддерживает инжекцию в конструктор .

См. Последний Javadoc .

...