模拟非静态类中的静态类方法

时间:2016-04-20 11:36:16

标签: mocking powermock easymock

如果我有

public class ServiceParameters {

    private String ABC;

    public ServiceParameters(ServiceParametersBuilder builder) {
        this.ABC = builder.ABC;
    }

    public static class ServiceParametersBuilder {
        private String ABC;

        public ServiceParameters build() {
            return new ServiceParameters(this);
        }
    }
}

以及在其他地方调用的代码

serviceParameters = new ServiceParameters.ServiceParametersBuilder().build();

我如何模拟以便上面的代码使用EasyMock和PowerMock返回一个模拟的ServiceParameters

1 个答案:

答案 0 :(得分:0)

你没有解释,你应该测试什么。无论如何,没有必要模拟ServiceParameters:它什么也不做,应该替换(或者用单元测试来模拟)。您可以创建它并继续测试。 如果ServiceParameters有一个方法:

public int someMethod()...

从DB读取文件或查询或调用第三方服务等。可以对这样的测试进行模拟:

public class TestServiceParameters {
    @Mock
    ServiceParameters parametersMock;

    @Test
    public void test() {
        Mockito.when(parametersMock.someMethod()).thenReturn(1);
        //.... test stuff here
    }
}

我还有一些例子here