在单元测试中有时需要对方法体内new出来的对象进行方法隔离,powermock提供了这个功能,下面是一个段样例代码:
UserBean user = mock(UserBean.class, RETURNS_DEEP_STUBS); when(user.getName()).thenReturn(null); //从excel中获取属性值 user.setAge((String) dpdata.get("age").get(0)); user.setName((String) dpdata.get("name").get(0)); UserBean mockUserBean = PowerMockito.mock(UserBean.class, RETURNS_DEEP_STUBS); when(mockUserBean.getName()).thenReturn(null); try { PowerMockito.whenNew(UserBean.class).withNoArguments() .thenReturn(mockUserBean); } catch (Exception e1) { e1.printStackTrace(); }
RETURNS_DEEP_STUBS 属性是为了支持多层mock时使用。