我试图通过嘲笑构造函数来让Powermock工作。在我测试的方法中,我调用了另一个类的构造函数(并且接受了很多参数,空构造函数不可用)。我不希望调用这个构造函数,因为我没有它需要的所有参数/值。
@RunWith(PowerMockRunner.class)
@PrepareForTest({FeatureManager.class, MyFilter.class})
public class ApplicabilityTest {
@Before
public void setUp() {
PowerMockito.mock(Filter.class);
MyFilter myFilterMock = PowerMockito.mock(MyFilter.class);
try {
PowerMockito.whenNew(MyFilter.class).withAnyArguments()
.thenReturn(MyFilterMock);
}
@Test
public void testAllApplicableStuff() {
ApplicabilityComponent applicabilityComponent = new ApplicabilityComponent();
Map response = ApplicabilityComponent.getAllApplicableExclusions(myInputData);
}
但是,当我调用调用myFilter构造函数的方法时,它仍会进入构造函数代码。我错过了什么?
这是对构造函数的调用在实际代码中的样子:
final MyFilter mFilter = new
MyFilter(
getNames(),
getPlaces(),
null,
provider,
procedure,
null,
new ArrayList(),
getServiceCategory(),
getCategory(),
null,
null,
getEffectiveDate(),
null);
答案 0 :(得分:0)
我不确定为什么会这样做,但这就是我解决这个问题的方法。我用Mockito而不是Powermock嘲笑了这个对象,剩下的就是按原样运行:
@Before
public void setUp() {
MyFilter myFilterMock = Mockito.mock(MyFilter.class);
try {
PowerMockito.whenNew(MyFilter.class).withAnyArguments().thenReturn(MyFilterMock);
}