我已经阅读过各种关于模拟和测试中存根的文章,包括Martin Fowler的Mocks Are Not Stubs,但仍然不明白其中的区别.
我没有玩这个并且通常使用嘲讽,但我想知道这两者之间的差异以及何时使用犀牛模拟中的一个或另一个.
更新:
我也用Ayende的话来找到我的问题的答案:
存根和模拟之间的区别
您可以在本文中获得这些术语的实际定义:模拟不是存根.我想从Rhino Mocks的角度来关注差异.
模拟是一个我们可以设置期望的对象,它将验证预期的操作确实已经发生.存根是您用于传递给测试代码的对象.您可以设置它的期望,因此它会以某种方式起作用,但这些期望永远不会得到验证.存根的属性将自动表现为普通属性,您无法设置它们的期望.
如果要验证测试代码的行为,您将使用具有适当期望的模拟,并验证.如果您只想传递可能需要以某种方式执行的值,但不是此测试的焦点,则将使用存根.
重要信息:存根永远不会导致测试失败.
什么是使用Mockito间谍的用例?
在我看来,使用callRealMethod可以使用mock处理每个间谍用例.
我可以看到的一个区别是,如果你想让大多数方法调用都是真实的,它会节省一些代码行来使用模拟和间谍.这是它还是我错过了更大的图景?
从Android Studio 1.1rc开始,有单元测试支持,我想知道Android Instrumentation测试和单元测试之间有什么区别.
据我了解:
单元测试对于测试不调用Android API的代码非常有用,而Android测试测试则是集成测试,用于测试Android API特定元素或GUI组件.
但是,如果你在单元测试中使用像Robolectric或Mockito这样的框架,你可以测试Android代码(不需要设备)如果我没有弄错的话.
这是正确的,还是有更大的区别?如果是这样,每个人的用途是什么?
testing android integration-testing unit-testing android-studio
我有一个界面
public interface IDataProvider
{
T GetDataDocument<T>(Guid document) where T:class, new()
}
Run Code Online (Sandbox Code Playgroud)
我想以某种方式模拟它,它只会返回给定类型的新实例,而不管确切的类型,如:
myMock.Setup(m => m.GetDataDocument<It.IsAny<Type>()>(It.IsAny<Guid>()))
.Returns(() => new T());
Run Code Online (Sandbox Code Playgroud)
(当然不起作用,因为我不能只给moq提供任何类型参数,我不知道必须返回哪种类型.
关于这个的任何想法?
我在我的项目中使用了更多的单元测试并阅读了我可以在线获取的所有信息,并且很多术语让我感到困惑.因此,我可能在对话和谷歌搜索中错误地使用这些术语.
有人可以概述所有单元测试术语,如"假"类型以及测试类型(交互与集成)?
虽然有足够的资源,即使是在SO上,但在这些Q/A中,只有两个术语相互比较.
那么,简而言之,他们每个人都是什么?它们如何相互关联?或者根本不是吗?
我是新手,对Jasmine
上述两个功能有点困惑。我的唯一目的是为间谍功能提供虚假实现。但是,如果我将调试器放入callFake
它会被调用,但它and.stub
的函数不会被调用。谁能解释一下这两个功能之间的区别。
spyOn(manager, 'getUsers').and.stub(function () {
//to do
});
Run Code Online (Sandbox Code Playgroud)
对比
spyOn(manager, 'getUsers').and.callFake(function () {
//to do
});
Run Code Online (Sandbox Code Playgroud) mocking ×5
testing ×5
unit-testing ×5
stub ×3
android ×1
c# ×1
jasmine ×1
java ×1
mockito ×1
moq ×1
rhino-mocks ×1
terminology ×1