相关疑难解决方法(0)

我在Mockito 2.2中用什么代替Whitebox来设置字段?

当使用Mockito 1.9.x时,我一直Whitebox用来设置字段值以"注入"模拟.以下示例:

@Before
public void setUp() {

    eventHandler = new ProcessEventHandler();
    securityService = new SecurityServiceMock();
    registrationService = mock(RegistrationService.class);

    Whitebox.setInternalState(eventHandler, "registrationService", registrationService);
    Whitebox.setInternalState(eventHandler, "securityService", securityService);
}
Run Code Online (Sandbox Code Playgroud)

我真的很喜欢这种方法,但是现在我尝试升级到Mockito 2.2.7我注意到(或者更确切地说,我的IDE注意并告诉了我很多次),在Mockito中找不到Whitebox.

我找到了一个可以替代的替代方案,也就是说org.powermock.reflect.Whitebox,问题在于我得到另一个依赖(Powermock),只是为了使用Whitebox.

Powermock还有一个名为的类Whitebox,但遗憾的是它看起来好像不能用Mockito 2.2.x

Mockito有什么好的替代方案可以用来手动"注入"字段,现在Whitebox已经不再可用了吗?


我在回复@JeffBowman的帖子时写了一篇评论.简而言之,我选择复制WhiteBox的代码,并使用它,因为它在大多数测试用例中使用,并且该类与其他类没有依赖关系.这是解决这个问题的最快途径.

注意 @bcody建议的解决方案是一个更好的选择,如果你使用spring,它不会为你维护额外的代码.我得到的信息很晚了:(

java tdd junit4 mockito powermock

19
推荐指数
4
解决办法
2万
查看次数

标签 统计

java ×1

junit4 ×1

mockito ×1

powermock ×1

tdd ×1