|
|
1
35
对象模拟用于防止依赖项进入单元测试。 有时,您会有一个类似“select person”的测试,它将从数据库中选择一个人并返回一个person对象。 要做到这一点,您通常需要依赖于数据库,但是通过对象模拟,您可以使用模拟框架模拟与数据库的交互,因此它可能返回一个类似于从数据库返回的数据集,然后您可以测试代码,以确保它处理将数据集转换为个人对象的过程,rath而不是用它来测试与数据库的连接是否存在。 |
|
|
2
17
有几个人已经回答了“什么”,但这里有几个快速的“为什么”,我可以想到:
|
|
|
3
12
模拟对象允许您根据所写内容和抽象细节(如访问资源(磁盘、网络服务等)进行测试。然后,这个模拟允许您假装是外部资源、类或其他什么东西。 您不需要一个模拟对象框架,只需扩展您不想在测试中担心的功能类,并确保您正在测试的类可以使用模拟而不是真实的东西(通过构造函数或setter或其他东西传递它)。 练习将显示何时模拟有用,何时不有用。 编辑:模拟资源特别重要,因此您不必依赖它们在测试期间存在,您可以模拟它们存在的方式和响应的详细信息(例如模拟fileNotFoundException或缺少的WebService,或WebService的各种可能返回值)。所有这些都没有涉及到缓慢的访问时间(模拟将证明比在测试中访问此类资源快得多)。 |
|
|
4
9
当然不是。有时候,用手写笑话会很乏味。但对于简单的事情,这一点也不坏。应用 Last Responsible Moment 对于模拟框架,只有当您向自己证明手写模拟比它的价值更麻烦时,才应该从手写模拟转换为框架。 如果你只是从模仿开始,直接跳到一个框架中至少会使你的学习曲线翻倍(你能把曲线翻倍吗?).模拟框架将 许多的 当你花了几个项目用手写模型的时候,你会感觉更好。 |
|
|
5
6
对象模拟是一种从接口、抽象类或使用虚拟方法的类创建“虚拟”或模拟对象的方法。为了测试的目的,它允许您在自己的定义中包装其中的一个。它对于生成一个依赖于您正在测试的某个代码块的对象很有用。 我喜欢用的一种流行的叫做 Moq 但是还有很多其他的,像犀牛,还有很多我不知道的。 |
|
|
6
5
它允许您测试项目的一个部分如何与其他部分交互,而不构建整个项目,也不可能缺少重要的部分。 编辑:维基百科的一个很好的例子:它允许你预先测试代码,就像汽车设计师使用碰撞测试假人来测试汽车在事故中的行为一样。 |
|
|
7
3
另一个用途是,它可以让您针对系统中尚未构建的其他部分进行测试。例如,如果您的类依赖于某个其他类,而该类是其他人正在处理的功能的一部分,那么您只需请求一个基本完整的接口,向接口编程,并按照您期望的那样模拟细节即可。然后,确保您对接口的假设是正确的(无论是在开发过程中,还是在特性完成后)。 |
|
|
8
1
模拟框架是否有用在一定程度上取决于所编写代码的语言。对于静态语言,您需要付出额外的努力,以欺骗编译器接受您的模拟对象作为对真实事物的替换。在动态类型语言(如python、ruby或javascript)中,通常只需将方法附加到任意对象或类上,并将其作为参数传递,这样框架的附加值就会少得多。 |
|
|
9
0
2.NET单元测试的推荐模拟框架是typemock-isolator和rohino-mock。 在下面的链接中,您可以看到typemock中关于为什么需要 mocking framework 用于单元测试。 |
|
|
Tim Kirkwood · 比较空数据帧 1 年前 |
|
|
nerrood · 为什么在笑话测试中不调用save 2 年前 |
|
|
eof · Chrome块文件下载-selenium 2 年前 |
|
Display name · Ember.js辛烷值验收试验 2 年前 |
|
|
Vitto · 理智和回归测试是如何在一个简单的场景中协同工作的? 2 年前 |
|
|
mattsmith5 · 使用特征文件并行计算空手道跑场景 2 年前 |
|
|
Norronas · 采用裸机编程的寄存器单元测试 2 年前 |