我曾使用过 JUnit 和 Mocks,但我想知道,JUnit 中的 Mock 和 Stub 之间有什么区别,以及如何在 JUnit、Java 中使用 Stub?而作为有EasyMock、Mockito等的Mocks,Stubs在Java中有什么用呢?
请为 Java 中的存根提供一些示例代码。
原文由 Wooopsa 发布,翻译遵循 CC BY-SA 4.0 许可协议
要在 junit 中使用存根,您不需要任何框架。
如果你想存根一些接口只是实现它:
interface Service {
String doSomething();
}
class ServiceStub implements Service {
public String doSomething(){
return "my stubbed return";
}
}
然后创建新的存根对象并将其注入测试对象。
如果你想存根一个具体类,创建子类并覆盖存根方法:
class Service {
public String doSomething(){
// interact with external service
// make some heavy computation
return "real result";
}
}
class ServiceStub extends Service {
@Override
public String doSomething(){
return "stubbed result";
}
}
原文由 Sergii Lagutin 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答762 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
1 回答552 阅读
1 回答2.8k 阅读
2 回答677 阅读✓ 已解决
2 回答828 阅读✓ 已解决
1 回答1.1k 阅读
在我看来,框架或技术无关紧要。模拟和存根可以定义如下。
存根是系统中现有依赖项(或协作者)的可控替代品。通过使用存根,您可以在不直接处理依赖项的情况下测试您的代码。
模拟对象是系统中的假对象,它决定单元测试是否通过。它通过验证被测对象是否按预期与假对象进行交互来实现。
也许这些图像可以阐明存根和模拟之间的交互。
存根
嘲笑