0
은 내가 autowire가 개체, 다음 클래스를 테스트 할 때 작동하지 않습니다주입 조항
@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
}
을 그러나, 다음과 같이 내 테스트를 생성
public class Provider {
@Autowired
private Service service;
public Provider() {}
public Provider(final Service service) {
this.service = service;
}
// Other code here
}
테스트를 실행하면 실패합니다. 모든 것이 무시됩니다. (...)가 무시되는 절을 제외하고는 괜찮습니다. 이로 인해 provider.execute() 호출에서 테스트가 실패합니다. 이 함수 안에서 service.process()에 대한 호출이 실행되고 "점수 모의 (mock)"가 반환 될 것으로 예상됩니다. 그러나 null 값이 대신 반환됩니다.
내가 잘못 했습니까?
:
나는 마지막 방법으로 코드를 가정합니다테스트가 definalized 할 수있는 클래스를 준비하지 않으면
Service
그런 다음 코드는 통과하지 것이다 PowerMock과 Mockito의 이상한 조합. 왜 둘 다? 나는 당신이 @RunWith (MockitoJunitRunner.class)를 원하지 않을 것이라고 생각한다. –
네, 그럴 것입니다 .... Powermockito는 혼자서는 사용할 수 없습니다. 나는 모키 토의 위에 그것을 사용한다. – user1883212