单元测试初入
单元测试的优点
- 方便修改代码且不引人新的bug。
- 可大胆重构,提高代码的质量和提升个人编码能力。
- TDD驱动,降低代码间的耦合,保证代码质量,快速理清理解代码.
框架
- 单元测试框架:XUnit 2.2.0。asp.net mvc就是用的这个,此内框架还有:NUnit、MSTest等
- 测试运行工具:xunit.runner.visualstudio 2.2.0。类似如:Resharper的xUnit runner插件。
- 模拟框架: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
Life is colourful
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧