gpt4 book ai didi

java - 我可以模拟父类(super class)方法调用吗?

转载 作者:太空狗 更新时间:2023-10-29 22:53:33 25 4
gpt4 key购买 nike

有时候,你想测试一个类方法,你想对父类(super class)方法的调用做一个期望。我没有找到使用 easymock 或 jmock 在 java 中实现这种期望的方法(我认为这是不可能的)。

有一个(相对)干净的解决方案,使用父类(super class)方法逻辑创建委托(delegate),然后对其设置期望,但我不知道为什么以及何时使用该解决方案,有什么想法/示例吗?

谢谢

最佳答案

好吧,如果你愿意,你可以。不知道大家是否熟悉JMockit ,去看看吧。目前的版本是0.999.17,同时,我们来看看吧……

假设有以下类层次结构:

public class Bar {
public void bar() {
System.out.println("Bar#bar()");
}
}

public class Foo extends Bar {
public void bar() {
super.bar();
System.out.println("Foo#bar()");
}
}

然后,在您的 FooTest.java 中使用 JMockit,您可以验证您实际上是从 Foo 调用 Bar

@MockClass(realClass = Bar.class)
public static class MockBar {
private boolean barCalled = false;

@Mock
public void bar() {
this.barCalled = true;
System.out.println("mocked bar");
}
}

@Test
public void barShouldCallSuperBar() {
MockBar mockBar = new MockBar();
Mockit.setUpMock(Bar.class, mockBar);

Foo foo = new Foo();
foo.bar();

Assert.assertTrue(mockBar.barCalled);

Mockit.tearDownMocks();
}

关于java - 我可以模拟父类(super class)方法调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/622763/

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