用Mockito将CUT中的静态工厂连接起来

时间:2014-01-05 15:16:56

标签: java junit mockito

我正在测试的课程是ClassA,其中一个私有方法使用静态工厂(简称CarFactory)方法getCar(XXX xxx),它返回Car

CarFactory逻辑的一部分是验证给定的xxx参数是否符合某些标准。

我尝试使用Mockito,如下所示:

@Mock private Car mockForCar;
@Mock private XXX xxxMock;

...

when(CarFactory.getCar(xxxMock)).thenReturn(mockForCar);

但我得到一个例外,因为CarFactory xxxMock无效。

为什么要调用真正的getCar(xxx)方法而不是被调用的方法?

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

来自Mockito FAQ

  

我可以模拟静态方法吗?

     

没有。 Mockito更喜欢面向对象和依赖注入   静态的,程序性的代码很难理解和更改。如果你   处理可怕的遗留代码,您可以使用JMockit或Powermock进行模拟   静态方法。

如果你想使用Mockito存根,你应该使它非静态并注入工厂。无论如何,这是更好的OO设计。