首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嘲笑是行不通的

嘲笑是行不通的
EN

Stack Overflow用户
提问于 2014-04-03 10:57:56
回答 1查看 156关注 0票数 0

我想模拟一个在不同项目中的方法。

假设在项目addNumbers()中有一个调用JUnitDemo ()的方法。我正在调用另一个项目中调用JunitDemoMock的计算()方法。

代码语言:javascript
运行
复制
public final int addNumbers(int num1)
    {

        Calculator calculator = new Calculator();
        int num2 = calculator.calculate(); total = num1 + num2;
        return total;
    }

现在,我想在单元测试中模拟计算()方法。我就是这样做的。

代码语言:javascript
运行
复制
@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,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-03 11:02:40

不确定,但不需要在MockDemo中设置Mock实例,比如

代码语言:javascript
运行
复制
MockDemo mockDemo = new MockDemo();
mockDemo.setCalculator(tested);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22835455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档