mockito.spy 방식에 문제가 있습니다.모키토 스파이 방식이 작동하지 않습니다.
나는 최근에 "오래된"프로젝트에 도착 해요 내 첫 번째 작업은 그 안에 mockito을 추가하고, 실제 단위 테스트 :
프로젝트를하는 것입니다 여기에 많은 개념의 문제 만이 아니 지점을 가지고 ;)
내가 내 문제 설명 : 나는 단지 executeTiti을 테스트 할 내 테스트 클래스 TitiTest.java에서 클래스public class Tutu{
public Tutu(){
}
}
public class Toto{
public Toto(){
}
public int executeToto(Tutu tutu){
//do some stuff
return 5;
}
}
public class Titi{
private Toto toto;
public Titi(){
this.toto = new Toto();
}
public void executeTiti(){
//do some stuff
Tutu tutu = new Tutu();
int ret = this.toto.executeToto(tutu);
//do some stuff
}
}
이
를, 내가 원하지 않는 이 클래스는 자체 테스트 클래스 TotoTest.java이기 때문에 executeToto 물건을 테스트 할 수있다.
(나는 내 테스트에도 PowerMock을 사용하고 있으므로 PowerMockRunner를 사용하고 있지만 PowerMockRunner를 사용하지는 않습니다. 문제)
@RunWith(PowerMockRunner.class)
public class TitiTest {
@Test
public void testExecuteTiti(){
Toto toto = Mockito.spy(new Toto());
Mockito.doReturn(2).when(toto).executeToto(Mockito.any(Tutu.class));
Titi testedObject = new Titi();
testedObject.executeTiti();
}
}
그러나 진짜 방법은 항상 호출하고 RET = 5 매번 :(
내가 뭔가를 그리워합니까? I에 유래에 이것에 대해 많은 글을 읽고 모든 솔루션을 시도했지만 작동하지이기 때문에 내가 옳은 일을하고 있다고 생각해.
내가 마음에 junit4.11/powermock1.5.4/mockito1.9.5
안녕하세요, 도움 주셔서 감사합니다, 내 질문을 마침내 좋은 인스턴스와 그 작업을 전달하기 위해 생성자를 변경합니다. 난 그냥 다른 코드가 있기 때문에 다른 솔루션이 있는지 알고 싶지 테스트 및 나는 기존 코드를 터치하고 싶지 않아하지만, 나는 당신과 동의,이 경우에는 선택의 여지가 :) 감사합니다 –
나는 생각합니다 레거시 코드의 빠른 리팩터링은 테스트를 더 쉽게할만한 가치가 있지만 프로덕션 코드를 변경하지 않고도 대답으로 PowerMockito 솔루션을 추구 할 수 있습니다. PowerMockito 코드를 조정해야 할 수도 있습니다. 그것을 가진 나의 경험은 한정되어있다. 행운을 빕니다! –