如何使用PowerMockito

时间:2016-08-22 05:36:35

标签: java unit-testing mocking powermock

问题示例:

class ToBeTested {
    private MyResource myResource;
    public toBeTested() {
        this.myResource = getResource();
    }

    private MyResource getResource() {
        //Creating My Resource using information form a DB
        return new MyResource(...);
    }
}

我想嘲笑getResource()所以我可以提供MyResource的模拟实例。我发现的关于如何模拟私有方法的所有示例都是基于首先创建ToBeTested实例然后替换函数,但是因为在我的情况下从构造函数中调用它所以要迟到了。

是否可以在创建它们之前将私有函数模拟到所有实例?

1 个答案:

答案 0 :(得分:2)

不是直接但是,您可以suppress然后使用power mockito进行模拟

    @RunWith(PowerMockRunner.class)
    @PrepareForTest(ToBeTested .class)
    public class TestToBeTested{

    @before
    public void setup(){
      suppress(method(ToBeTested.class, "getResource"));
    }

    @Test
    public void testMethod(){
        doAnswer(new Answer<Void>() {
      @Override
      public MyResource answer(InvocationOnMock invocation) throws Throwable {
           return new MyResource();
      }
 }).when(ToBeTested.class, "getResource");
    }

       ToBeTested mock = mock(ToBeTested.class);
       mock.myMethod();
       //assert
    }