当前位置: 首页 > news >正文

单元测试初入

单元测试的优点

  • 方便修改代码且不引人新的bug。
  • 可大胆重构,提高代码的质量和提升个人编码能力。
  • TDD驱动,降低代码间的耦合,保证代码质量,快速理清理解代码.

框架

  1. 单元测试框架:XUnit 2.2.0。asp.net mvc就是用的这个,此内框架还有:NUnit、MSTest等
  2. 测试运行工具:xunit.runner.visualstudio 2.2.0。类似如:Resharper的xUnit runner插件。
  3. 模拟框架:Moq 4.7.10。 asp.net mvc、Orchard使用了。此类框架还有:RhinoMocks、NSubstitute、FakeItEasy等

概念过程:

    • AAA逻辑顺序
      • 准备(Arrange)对象,创建对象,进行必要的设置
      • 操作(Act)对象
      • 断言(Assert)某件事情是预期的。
    • Assert(断言):对方法或属性的运行结果进行检测
    • Stub(测试存根\桩对象):用返回指定结果的代码替换方法(去伪造一个方法,阻断对原来方法的调用,为了让测试对象可以正常的执行)
    • Mock(模拟对象):一个带有期望方法被调用的存根(可深入的模拟对象之间的交互方式,如:调用了几次、在某种情况下是否会抛出异常。mock是一种功能丰富的stub)

好的测试

    • 测试即文档
    • 无限接近言简意赅的自然化语言
    • 测试越简明越好,每个测试只关注一个点。
    • 好的测试足够快,测试易于编写,减少依赖
    • 好的测试应该相互隔离,不依赖于别的测试,不依赖于外部资源
    • 可描述的命名:UnitOfWorkName_ScenarioUnderTest_ExpectedBehavior(命名可团队约定,我甚至觉得中文命名也没什么不可以的)
      • UnitOfWorkName  被测试的方法、一组方法或者一组类
      • Scenario  测试进行的假设条件,例如“登入失败”,“无效用户”或“密码正确”等
      • ExpectedBehavior  在测试场景指定的条件下,你对被测试方法行为的预期 

原文地址:http://www.cnblogs.com/zhaopei/p/UnitTesting.html

 

转载于:https://www.cnblogs.com/cheney123456/p/6929364.html

相关文章:

  • Django 博客开发教程 10 - 页面侧边栏:使用自定义模板标签
  • python爬虫从入门到放弃(六)之 BeautifulSoup库的使用
  • 基于 Postgres 的数据库通过美国政府安全认证
  • PID 控制的“开源咖啡机”
  • 2017 Perl 开发者调查,vim 是他们最爱的编辑工具
  • Linux串口IO模式的一些心得
  • PHPStorm解决Failed to change timestamp of the file
  • Ext JS 5 对平板的支持 【已翻译100%】
  • 在 AngularJS 应用中通过 JSON 文件来设置状态 【已翻译100%】
  • 一款基于jQuery的漂亮弹出层
  • uva 12230 Crossing Rivers
  • 51nod 1010 只包含因子2 3 5的数 二分答案
  • iOS10App如何跳转到系统设置转
  • IPv4检验和计算
  • vue总结
  • exports和module.exports
  • Java 网络编程(2):UDP 的使用
  • java8 Stream Pipelines 浅析
  • JavaScript设计模式与开发实践系列之策略模式
  • js中forEach回调同异步问题
  • Material Design
  • NSTimer学习笔记
  • oschina
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 测试开发系类之接口自动化测试
  • 从零搭建Koa2 Server
  • 对超线程几个不同角度的解释
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 因为阿里,他们成了“杭漂”
  • Spring第一个helloWorld
  • 说说我为什么看好Spring Cloud Alibaba
  • #FPGA(基础知识)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (arch)linux 转换文件编码格式
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (八)Flask之app.route装饰器函数的参数
  • (蓝桥杯每日一题)love
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十六)Flask之蓝图
  • (转)jQuery 基础
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .Net中ListT 泛型转成DataTable、DataSet
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [BIZ] - 1.金融交易系统特点
  • [BZOJ1008][HNOI2008]越狱
  • [caffe(二)]Python加载训练caffe模型并进行测试1
  • [CF407E]k-d-sequence
  • [Codeforces] probabilities (R1600) Part.1
  • [COI2007] Sabor
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [IDF]聪明的小羊
  • [LeetCode] NO. 169 Majority Element