C# - 单元测试,模拟?

标签 c# unit-testing mocking

应该使用目标类的内置单元测试生成器 (VS) 还是我应该自己学习如何编写单元测试?这个“模拟”是什么东西?我一遍又一遍地听到它,但没有人关心给出一个好的解释。

提前致谢。

最佳答案

您需要学习自己编写单元测试。从正确理解许多人在以下方面犯错误的术语开始,从右脚开始:

单元测试:测试单个代码单元,非常小的原子测试。

集成测试:测试集成在一起的多个代码单元,通过不同的层并确保它们正确使用彼此。这些应该在单元测试验证了各个单元独立工作之后完成。许多人错误地将这些称为单元测试。

内置验证测试:通过部署和运行将以用户方式与其交互的测试来测试内置产品。也经常被错误地称为单元测试。这些是规模最大、功能最全的测试,通常由测试团队手动完成,而不是自动完成。

这是一个模拟框架 MOQ 的快速入门: https://github.com/Moq/moq4/wiki/Quickstart

模拟是采用一小段可能依赖于其他事物的代码,模拟这些其他事物,以便您可以控制要测试的代码段周围的环境。

模拟的目的是测试中的原子性。它允许您只测试您想要的单个代码片段,而不会因为相关代码片段中的错误而影响它的测试。模拟还使您能够构建各种场景来测试每段代码的边缘情况。

Mocking 通常用于在单元测试中围绕目标代码创建边界,但在集成测试中也经常使用它来构建充当目标集成代码链种子的资源。

关于C# - 单元测试,模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3702461/

相关文章:

c# - 将 XML 中的 HTML 实体转换为 C# 中的等效 Unicode

ruby - 如何通过 ruby​​ 将测试结果重定向到 txt 文件?

groovy - 使用 Spock 验证非 spy 方法调用

java - JMockit - 两个相同类型的模拟实例

c# - 使用 asp.net 样板和 Automapper 进行自定义映射

c# - 如何用 C# 将每个单词的第一个字符或整个字符串的第一个字符大写?

c# - AutoMapper:将空源对象映射到十进制

c# - 您如何测试执行文件 IO 的代码?

javascript - 如何对内部使用 localStorage 的 AngularJS 服务进行单元测试

django - 为什么模拟补丁仅在运行特定测试而不是整个测试套件时有效?