我想模拟一个在不同项目中的方法。
假设在项目addNumbers()中有一个调用JUnitDemo ()的方法。我正在调用另一个项目中调用JunitDemoMock的计算()方法。
public final int addNumbers(int num1)
{
Calculator calculator = new Calculator();
int num2 = calculator.calculate(); total = num1 + num2;
return total;
}
现在,我想在单元测试中模拟计算()方法。我就是这样做的。
@RunWith(PowerMockRunner.class)
@PrepareForTest({Calculator.class})
public class MockDemoTest
{
/**
* Test method for {@link com.nyl.mock.MockDemo#addNumbers(int)}.
*
* @throws Exception
*/
@Test
public void testAddNumbers() throws Exception
{
// Mock only the calculate method
Calculator tested =
PowerMock.createPartialMock(Calculator.class, "calculate");
// Expect the private method call to "calculate"
PowerMock.expectPrivate(tested, "calculate").andReturn(89);
PowerMock.replay(tested);
MockDemo mockDemo = new MockDemo();
assertEquals(10, mockDemo.addNumbers(3));
//PowerMock.verify(tested);
}
}
但这里并没有发生真正的嘲弄。计算()方法将在运行时执行。请告诉我为什么会发生这种情况,以及如何正确地模拟计算()。
注意:如果在同一个项目中有计算()方法,我的意思是在JUnitDemo中,模拟是很好的。
Lib版本
cglib-nodep-2.2.2.jar,easymock 3.1.jar,javassist 3.18.0-GA.jar,junit-4.7.jar,objensis-1.2.jar,powermo-easymok-1.5.1-Full.jar,
发布于 2014-04-03 11:02:40
不确定,但不需要在MockDemo中设置Mock实例,比如
MockDemo mockDemo = new MockDemo();
mockDemo.setCalculator(tested);
https://stackoverflow.com/questions/22835455
复制相似问题