당신은 약간의 코드를 제공합니다. 감사합니다. 그러나 다음에 sscce (올바른 (Compilable) 예) 게시 할 것을 고려하십시오.
나는 (그리고 당신의 코드를 수정하려고 시도했다.) 작동한다. 나는 다음과 같은 종속성 받는다는 프로젝트를 구성한
public class A {
public int someAMethod() {
B objB = new B();
return objB.someBMethod();
}
}
public class B {
public int someBMethod() {
C objC = new C();
return objC.getA();
}
}
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest({ A.class, B.class, C.class })
public class TestApp {
@Mock
C mockC;
@Test
public void shoudlReturnTheCValue() throws Exception {
when(mockC.getA()).thenReturn(666);
PowerMockito.whenNew(C.class).withNoArguments().thenReturn(mockC);
assertEquals(666, new A().someAMethod());
}
}
: 메신저 다른 일을 어디
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
좋아, 내가 더 모양이 코드의 내 버전입니다. 응답에 감사 드리며 다음 번에 컴파일 가능한 코드를 게시 할 것입니다. 그리고 하나의 질문은 인수가 전달 된 matcher와 실제 런타임 중에 전달되는 정확한 값이 아닌 경우에 when()/whenNew() 비슷한 일이 스텁을하지 못하는 것입니다. 실제 값이 예상되는 상황과 mactchers를 사용할 수있는시기를 알려주시겠습니까? 이런 일이 생기면 나는 그 패턴을 얻을 수 있을까? – broun
문제를 발견 했습니까? 죄송합니다. 다른 사람들의 질문을 이해하지 못합니다. 더 많은 사람들의 도움을 얻기 위해 새로운 질문을 만들어야 할 수도 있습니다. – gontard