我曾经使用过JUnit和Mock,但我想知道,JUnit中的Mock和Stub有什么不同,以及如何在JUnit中使用Stub?和具有EasyMock、Mockito等的Mock一样,Stub在Java中使用什么?
请给出一些用Java编写的Stub示例代码。
发布于 2015-08-08 16:03:52
要在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";
}
}
发布于 2019-11-29 09:48:42
一般来说-模拟意味着实现一些行为,存根-只是提供一些数据。换句话说,当您需要演示它更改/保持某些状态时,最好使用work mock
当您的类仅公开内部状态时,请使用存根这个词。实际上,您可以在任何地方使用mock,而stub只是mock的子集
https://stackoverflow.com/questions/31890991
复制相似问题