在超类中模拟新对象调用

时间:2017-12-19 21:46:15

标签: junit powermockito

我很难在我的单元测试中找到这一块嘲讽。有问题的类都是遗留代码的一部分,我现在无法真正改变(我希望将来能够进行一些重构,但现在需要测试)。

以下是我正在处理的两个类,以及我遇到问题的具体部分。 A类使用new声明一个对象,然后B类使用该对象。我试图模拟对象,但我不断得到它的真实版本而不是模拟版本。

public class B extends A(){
  ...
  int x = problemObj.doMethod();
}
public class A(){
  ...
  ProblemObj problemObj = new ProblemObj();
}

这是我的测试课。

@RunWith(PowerMockRunner.class)
@PrepareForTest({A.class, B.class})
public class ATest(){
  private ProblemObj problemObjMock;

  @Before
  public void setUp(){
    problemObj = PowerMockito.Mock(ProblemObj.class);
  }

  @Test
  public void test(){

    PowerMockito.whenNew(ProblemObj.class).withNoArguments().thenReturn(problemObj);
    ...//rest of test below here
  }
}

我在测试中做了其他whenNew模拟并将其设置为与此相同。但由于某种原因,这个对象在超类中真的让我失望。

使用的版本是Junit:4.11,Mockito:1.9.5,Powermock:1.6.6

0 个答案:

没有答案