在 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);
}
我真的很喜欢这种方法,但是现在我试图升级到我注意到(或者更确切地说,我的IDE注意到并告诉我很多次),Whitebox不再在Mockito中找到。Mockito
2.2.7
我找到了一个替代方案,可以作为替代品,那就是 org.powermock.reflect.Whitebox
,问题是我得到了另一个依赖项(Powermock),只是为了使用Whitebox。
Powermock
还有一个名为 的类,但不幸的是,它看起来好像不能与Whitebox
Mockito 2.2.x
Mockito中是否有任何好的替代方案,我可以用来手动“注入”字段,现在不再可用?Whitebox
溶液
我在评论中写道,以回应@JeffBowman的帖子。简而言之,我选择复制WhiteBox的代码并使用它,因为它在大多数测试用例中使用,并且该类没有与其他类的依赖关系。这是解决此问题的最快途径。
注意@bcody建议的解决方案是一个更好的选择,如果您使用的是spring,它不会为您维护任何额外的代码。我把这些信息带到了深夜:(