2 回答
TA贡献1842条经验 获得超21个赞
假设可以使用 setter 设置该变量,则可以监视类对象并重写其方法。utilsUtilscreateLink()
基本思想是:
Utils utils = new Utils();
Utils spyUtils = Mockito.spy(utils);
doNothing().when(spyUtils).createLink(any(String.class), any(String.class));
现在,通过设置器设置此对象。每次调用时,它都不执行任何操作。spyUtilscreateLink
TA贡献1816条经验 获得超4个赞
您可以模拟您的utils方法以不执行任何操作(使用PowerMockito)或更改您的代码,以便utils方法不是静态的,您可以将utils方法的模拟实例注入到您测试的对象中,如下所示:
class ForTesting{
UtilsClass utilsInstance;
ForTesting (UtilsClass utilsInstance) {
this.utilsInstance = utilsInstance;
}
// method you test
public String doSomeTask(String src, String dst) {
// some code
utilsInstance.createLink(src, dst);
// some more code
}
}
@Test
public void test(){
UtilsClass utilsInstance = mock(UtilsClass.class);
ForTesting classForTesting = new ForTesting(utilsInstance);
assertEquals("yourValue",classForTesting.doSomeTask());
}
使用 PowerMockito 进行模拟会产生一些开销,因为您无法在没有继承的情况下重写静态方法,因此某些本机方法需要在运行时修改字节代码。
添加回答
举报