Java 如何用多个参数模拟静态方法
我正在编写一个测试用例来测试调用接受5个参数的静态方法的组件。我想知道我该怎么做 前面我已经成功地模拟了带有0和1参数的静态方法。但是,当我模拟一个包含多个参数的静态方法时,它返回null。下面是我试图做的一个简化版本。静态方法有2个参数Java 如何用多个参数模拟静态方法,java,junit,mockito,powermockito,Java,Junit,Mockito,Powermockito,我正在编写一个测试用例来测试调用接受5个参数的静态方法的组件。我想知道我该怎么做 前面我已经成功地模拟了带有0和1参数的静态方法。但是,当我模拟一个包含多个参数的静态方法时,它返回null。下面是我试图做的一个简化版本。静态方法有2个参数 public interface VO { } 我希望sysout应该打印3,但是vo是空的。在这种特殊情况下,any(String.class)与执行测试时通过的null不匹配 //... VO vo = Factory.getObj("a", nul
public interface VO {
}
我希望sysout应该打印3,但是vo是空的。在这种特殊情况下,
any(String.class)
与执行测试时通过的null
不匹配
//...
VO vo = Factory.getObj("a", null);
//...
使用anyString()
成功了。非常感谢。我尝试了(String)Mockito.any(),因为我的实际代码会有自定义对象。@Nkosi:anyString()与
null
-它的行为与any(Sting.class)
相同。另外,when(Factory.getObj(anyString(),null))
无效,因为不能同时使用匹配器和非匹配器。
public class Factory {
public static VO getObj(String a, String b) {
return new A();
}
}
@RunWith(PowerMockRunner.class)
@PrepareForTest({com.csc.fsg.nba.vo.Factory.class})
public class APITest {
@BeforeClass
public static void runOnceBeforeClass() throws Exception {
System.out.println("Executing runOnceBeforeClass()");
A a = new A();
a.setValue(3);
PowerMockito.mockStatic(Factory.class);
Mockito.when(Factory.getObj(Mockito.any(String.class), Mockito.any(String.class))).thenReturn(a);
}
@Test
public void testA() throws Exception {
VO vo = Factory.getObj("a", null);
System.out.println(((A)vo).getValue());
}
}
//...
VO vo = Factory.getObj("a", null);
//...
//...
when(Factory.getObj(anyString(), anyString())).thenReturn(a);