我很难在我的单元测试中找到这一块嘲讽。有问题的类都是遗留代码的一部分,我现在无法真正改变(我希望将来能够进行一些重构,但现在需要测试)。
以下是我正在处理的两个类,以及我遇到问题的具体部分。 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