org.jetbrains.annotations @NotNull在模拟私有方法时与Mockito接口

0lvr5msh  于 2022-12-18  发布在  其他
关注(0)|答案(1)|浏览(273)

我试图用powermock来模拟我的服务的一个私有方法,方法是为它的参数传递mockito匹配器“eq”,其中一个参数是用jetbrains的@NotNull装饰器注解的。
当我运行测试时,我得到了以下错误:

java.lang.参数非法异常:Y的@NotNull参数X的参数不能为空

测试目标

import org.jetbrains.annotations.NotNull;
...

class Service {
...
  private Map<String, Object> computeDataModel(User user, @NotNull Configuration configuration, Object providedDataModel) {...
}

测试类别

PowerMockito.when(service, "computeDataModel", eq(user), eq(configuration), eq(providedDataModel)).thenReturn(dataModel);

我也尝试过使用任何(Configuration.class),但没有成功。
你知道怎么处理吗?谢谢你的关注

6uxekuva

6uxekuva1#

这实际上与注解无关,而是与使用空值调用real方法有关。

PowerMockito.when(service, "computeDataModel", eq(user), eq(configuration), eq(providedDataModel))
    .thenReturn(dataModel);

调用真实的方法。
eq是一个匹配器,返回null,有效地调用了具有3个空参数的方法。
如果你想避免调用真实的方法,你可以使用PowerMockito的另一种方法:

PowerMockito.doReturn(dataModel)
    .when(service, "computeDataModel", eq(user), eq(configuration), eq(providedDataModel));

相关问题