PowerMockito를 사용하여 단일 정적 메서드 모의 및 객체 반환
이 시나리오에서는 다음에서 정적 메서드 m1을 모의하는 것을 목표로 합니다. 두 개의 정적 메서드 m1과 m2를 포함하는 클래스입니다. 목표는 m1이 호출될 때 객체를 반환하는 것입니다.
이를 달성하기 위해 처음에는 m1에 대한 반환 값을 설정하기 위해 사용자 정의 Answer와 함께 PowerMockito.mockStatic을 사용하려고 시도했습니다. 그러나 이 접근 방식은 반환 유형이 다른 m1과 m2를 모두 호출했기 때문에 유형 불일치 오류가 발생했습니다.
또한 PowerMockito.when을 사용하여 m1에 대한 반환 값을 직접 지정하려고 시도했습니다. 그러나 이는 이후에 m1이 호출될 때 적용되지 않았습니다.
올바른 전략은 mockStatic의 1-인수 버전을 모두 활용하여 정적 모의를 활성화하고 when-thenReturn 구문을 사용하여 반환 값을 지정하는 것입니다. 타겟 방법. 방법은 다음과 같습니다.
import static org.mockito.Mockito.*; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; class ClassWithStatics { public static String getString() { return "String"; } public static int getInt() { return 1; } } @RunWith(PowerMockRunner.class) @PrepareForTest(ClassWithStatics.class) public class StubJustOneStatic { @Test public void test() { PowerMockito.mockStatic(ClassWithStatics.class); when(ClassWithStatics.getString()).thenReturn("Hello!"); System.out.println("String: " + ClassWithStatics.getString()); System.out.println("Int: " + ClassWithStatics.getInt()); } }
이 예에서 ClassWithStatics에는 getString 및 getInt라는 두 가지 정적 메소드가 포함되어 있습니다. 테스트 클래스인 StubJustOneStatic은 PowerMockito를 사용하여 ClassWithStatics에 대한 정적 모의를 활성화한 다음 getString의 반환 값을 "Hello!"로 스텁합니다. when-thenReturn을 사용합니다. getInt의 기본 동작은 유지되므로 계속해서 1을 반환합니다.
위 내용은 단일 정적 메소드를 모의하고 PowerMockito를 사용하여 객체를 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!