PowerMock当新的仍然进入构造函数代码

时间:2018-05-28 05:33:06

标签: powermockito

我试图通过嘲笑构造函数来让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);

1 个答案:

答案 0 :(得分:0)

我不确定为什么会这样做,但这就是我解决这个问题的方法。我用Mockito而不是Powermock嘲笑了这个对象,剩下的就是按原样运行:

@Before
    public void setUp() {
        MyFilter myFilterMock = Mockito.mock(MyFilter.class);
    try {

  PowerMockito.whenNew(MyFilter.class).withAnyArguments().thenReturn(MyFilterMock);
}