Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用多个参数模拟静态方法_Java_Junit_Mockito_Powermockito - Fatal编程技术网

Java 如何用多个参数模拟静态方法

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

我正在编写一个测试用例来测试调用接受5个参数的静态方法的组件。我想知道我该怎么做

前面我已经成功地模拟了带有0和1参数的静态方法。但是,当我模拟一个包含多个参数的静态方法时,它返回null。下面是我试图做的一个简化版本。静态方法有2个参数

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);