gpt4 book ai didi

java - 模拟不起作用

转载 作者:行者123 更新时间:2023-12-02 05:58:57 24 4
gpt4 key购买 nike

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

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

public final int addNumbers(int num1)
{

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

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

@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);
}

}

但是这里并没有发生实际的 mock 。方法calculate()将在运行时执行。任何人都可以告诉我为什么会发生这种情况以及我们如何正确地模拟calculate()。

注意:如果我们在同一个项目中有calculate()方法,我的意思是在JUnitDemo中,模拟工作正常。

库版本

cglib-nodep-2.2.2.jar,easymock-3.1.jar,javassist-3.18.0-GA.jar,junit-4.7.jar,objenesis-1.2.jar,powermock-easymock-1.5.1-full.jar,

最佳答案

不确定,但你不需要在 MockDemo 中设置 Mock 实例吗

MockDemo mockDemo = new MockDemo();
mockDemo.setCalculator(tested);

关于java - 模拟不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22835455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com