gpt4 book ai didi

java - 关于使用 stub - Java

转载 作者:行者123 更新时间:2023-11-28 20:18:27 27 4
gpt4 key购买 nike

我正在阅读 http://xunitpatterns.com/Test%20Stub.html并对 stub 的使用有一些疑问,例如,在页面显示的代码中,作者创建了一个名为 TimeProviderTestStub.java 的类,用于测试代码。我对测试代码中的这一行有一些疑问:

TimeDisplay sut = new TimeDisplay();
// Test Double installation
sut.setTimeProvider(tpStub);

我是否需要修改我的类 (SUT) 以接收一个对象 TimeProviderTestSub?

最佳答案

stub 类和真实类都应该实现一些接口(interface),即ITimeProvidersetTimeProvider() 应该将这个接口(interface)作为它的参数。接口(interface)必须公开 SUT 与对象交互所需的所有方法,因为 TimeDisplay 现在只能通过 ITimeProvider 接口(interface)使用对象(这允许我们使用 stub 而不是我们测试中的真实对象)。

在示例中,SUT (TimeDisplay) 似乎只需要 getTime() 方法,因此接口(interface)应该只包含该方法:

public interface ITimeProvider {
Calendar getTime();
}

stub 的声明应该是

public class TimeProviderTestStub implements ITimeProvider { ... }

真正类的声明应该是

public class TimeProvider implements ITimeProvider { ... }

最后,SUT 必须更改其设置方法以接受接口(interface):

public void setTimeProvider(ITimeProvider timeProvider) { ... }

并将其内部 timeProvider 字段更改为 ITimeProvider 类型。

如果你不控制真实类的代码(以至于你不能让它实现接口(interface)),你可以创建一个适配器类来包装真实类并实现接口(interface)。

关于java - 关于使用 stub - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5842773/

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