要在Mockito 1.49版本中模拟私有方法,请按照以下步骤操作:
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.49.0</version>
<scope>test</scope>
</dependency>
</dependencies>
对于Gradle项目,在build.gradle文件中添加以下依赖项:
dependencies {
testCompile 'org.mockito:mockito-core:1.49.0'
}
MyClass
的类,其中包含一个名为myPrivateMethod
的私有方法:public class MyClass {
private String myPrivateMethod(String input) {
// Implementation details here
}
}
MyClass
类的实例,并使用spy()
方法调用私有方法。然后,使用doReturn()
方法指定模拟私有方法的返回值:import org.junit.Test;
import org.mockito.Mockito;
import static org.mockito.Mockito.*;
public class MyClassTest {
@Test
public void testMyPrivateMethod() throws Exception {
MyClass myClassSpy = Mockito.spy(new MyClass());
// 指定myPrivateMethod的返回值
doReturn("Mocked response").when(myClassSpy, "myPrivateMethod", anyString());
// 调用myPrivateMethod并验证结果
String response = myClassSpy.getClass().getDeclaredMethod("myPrivateMethod", String.class).invoke(myClassSpy, "testInput");
assertEquals("Mocked response", response);
// 验证myPrivateMethod是否被调用
verify(myClassSpy, times(1)).invoke("myPrivateMethod", anyString());
}
}
请注意,模拟私有方法通常不是最佳实践,因为这可能导致代码难以维护和理解。在大多数情况下,最好使用公共方法或将私有方法更改为包私有,以便在不使用Mockito的情况下进行测试。
领取专属 10元无门槛券
手把手带您无忧上云