private ServiceImpl() {
// TODO Auto-generated constructor stub
reMgr = (ReManager) SpringContext.getBean("reManager");
我想模拟此方法,这是一个初始化springContext的私有构造函数。我正在使用bean.xml通过powermockito测试用例设置beanfactory,其中已经指定了bean及其类名。仍然此方法无法获取reManager的实例。
最佳答案
如果我误解了一些内容,请原谅我,但是如果您使用的是PowerMockito,则无法按照以下方式进行操作:
@RunWith(PowerMockRunner.class)
@PrepareForTest(SpringContext.class)
public FooTest {
@Test
public void foo() {
final ReManager manager = Mockito.mock(ReManager.class);
PowerMockito.mockStatic(SpringContext.class);
Mockito.when(SpringContext.getBean("reManager")).thenReturn(manager);
... etc...
}
}
查看有关如何验证静态行为的更多信息here。
或者...我将更改设计,以便将您的依赖项传递给测试中的类,例如:
@Test
public void foo() {
final ReManager manager = Mockito.mock(ReManager.class);
final ServiceImpl service = new ServiceImpl(manager);
... etc...
}
这样就不需要PowerMock,您的测试变得更加容易,并且类之间的耦合也更少了。