я должен проверить следующий класс, с autowired объекта:Инъекция издевается не работает с тем, когда пункты
public class Provider {
@Autowired
private Service service;
public Provider() {}
public Provider(final Service service) {
this.service = service;
}
// Other code here
}
Я создал тест следующим образом:
@RunWith(PowerMockRunner.class)
public class ProviderTest {
@Mock(name="service") Service service;
@Mock Score score;
@InjectMocks Provider provider = new SearchResultProvider();
@Before
public void setup() {
when(service.process()).thenReturn(score);
}
@Test
public void my_test() {
provider.execute(); // It fails, because service.process() returns null
// Other code here
}
// Other tests here
}
Однако, когда Я запускаю тест, он терпит неудачу. Все в порядке, кроме предложения, когда (...), который, кажется, игнорируется. Это приводит к сбою теста при вызове provider.execute(). Внутри этой функции выполняется вызов функции service.process(), после чего я ожидаю, что будет возвращен «макет». Но вместо этого возвращается нулевое значение.
Что я сделал не так?
Вы делаете некоторые странные комбинации PowerMock и Mockito. Почему оба? Я думаю, что вы, возможно, захотите @RunWith (MockitoJunitRunner.class) не уверены –
Да, это должно быть хорошо ... Powermockito нельзя использовать в одиночку. Я использую его на вершине Мокито. – user1883212