如何使用mockito在私有方法中模拟声明的类

rbpvctlc  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(414)

我正在编写junit测试来测试在其中声明了类的私有方法。
我的代码:

private Object getFunctReturn()
 {
   InterfaceName obj = new ClassName():
   Map map = obj.getMap();
   map.foreach()->{
            //iterating map here....
   }
 }

我正在使用whitebox api测试私有方法。如何模拟interfacename obj=new classname();这样我就可以继续执行下一个代码了?

e4eetjau

e4eetjau1#

试着这样做:

@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassUnderTest.class)
public class SimpleTest {

    @Test
    public void test() throws Exception {
        ClassUnderTest underTest = new ClassUnderTest();

        ClassName obj = new ClassName();
        obj.setMap(Map.of("1", "one", "2", "two"));

        PowerMockito.whenNew(ClassName.class).withNoArguments().thenReturn(obj);

        WhiteboxImpl.invokeMethod(underTest, "getFunctReturn");
    }
}

相关问题