如何在 JUnit 和 Java 中使用存根?
How to use stubs in JUnit and Java?
我使用过 JUnit 和 Mocks,但我想知道,JUnit 中的 Mock 和 Stub 有什么区别以及如何在 JUnit 中使用 Stub,Java?
而作为具有 EasyMock、Mockito 等的 Mock,Stubs 在 Java 中使用什么?
请在Java.
中给出一些存根的示例代码
要在 junit 中使用存根,您不需要任何框架。
如果你想存根一些接口,只需实现它:
interface Service {
String doSomething();
}
class ServiceStub implements Service {
public String doSomething(){
return "my stubbed return";
}
}
然后创建新的存根对象并将其注入测试对象。
如果您想存根具体 class,请创建子class 并覆盖存根方法:
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";
}
}
在我看来,框架或技术无关紧要。模拟和存根可以定义如下。
存根是系统中现有依赖项(或协作者)的可控替代品。通过使用存根,您可以在不直接处理依赖项的情况下测试您的代码。
模拟对象是系统中决定单元测试是否通过的假对象。它通过验证被测对象是否按预期与假对象进行交互来实现。
也许这些图像可以阐明存根和模拟之间的交互。
存根
模拟
一般来说——模拟意味着实现一些行为,存根——只是提供一些数据。换句话说,当您需要证明它 changes/keeps 某些状态
时,最好使用工作模拟
当您 类 仅公开内部状态时,请使用存根一词。事实上你可以在任何地方使用 mock,而 stub 只是 mock
的子集
我使用过 JUnit 和 Mocks,但我想知道,JUnit 中的 Mock 和 Stub 有什么区别以及如何在 JUnit 中使用 Stub,Java? 而作为具有 EasyMock、Mockito 等的 Mock,Stubs 在 Java 中使用什么?
请在Java.
中给出一些存根的示例代码要在 junit 中使用存根,您不需要任何框架。
如果你想存根一些接口,只需实现它:
interface Service {
String doSomething();
}
class ServiceStub implements Service {
public String doSomething(){
return "my stubbed return";
}
}
然后创建新的存根对象并将其注入测试对象。
如果您想存根具体 class,请创建子class 并覆盖存根方法:
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";
}
}
在我看来,框架或技术无关紧要。模拟和存根可以定义如下。
存根是系统中现有依赖项(或协作者)的可控替代品。通过使用存根,您可以在不直接处理依赖项的情况下测试您的代码。
模拟对象是系统中决定单元测试是否通过的假对象。它通过验证被测对象是否按预期与假对象进行交互来实现。
也许这些图像可以阐明存根和模拟之间的交互。
存根
模拟
一般来说——模拟意味着实现一些行为,存根——只是提供一些数据。换句话说,当您需要证明它 changes/keeps 某些状态
时,最好使用工作模拟当您 类 仅公开内部状态时,请使用存根一词。事实上你可以在任何地方使用 mock,而 stub 只是 mock
的子集