首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET单元测试艺术-2.核心技术

开篇:上一篇我们学习基本单元测试基础知识和入门实例。但是,如果我们要测试方法依赖于一个外部资源,如文件系统、数据库、Web服务或者其他难以控制东西,那又该如何编写测试呢?...这一篇中我们会开始接触这些核心技术,借助存根破除依赖,使用模拟对象进行交互测试,使用隔离框架支持适应未来和可用性功能。 一、破除依赖-存根 1.1 为何使用存根?   ...它设计目标是提供一个优秀测试替代.NET模拟框架。它是一个模拟测试框架,用最简洁语法,使得我们能够把更多注意力放在测试工作,减轻我们测试配置工作,以满足我们测试需求,帮助完成测试工作。...四、小结   本篇我们学习了单元测试核心技术:存根、模拟对象以及隔离框架。使用存根可以帮助我们破除依赖,模拟对象与存根区别主要在于存根不会导致测试失败,而模拟对象则可以。...(1)Roy Osherove 著,金迎 译,《单元测试艺术(第2版)》   (2)匠心十年,《NSubsititue完全手册》   (3)张善友,《单元测试模拟框架:NSubstitute》 作者:

1.6K20

ASP.NET Web API路由系统:路由系统几个核心类型

虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道核心部分(定义在程序集System.Web.Http.dll中)已经移除了对...也就是说,ASP.NET Web API核心框架URL路由系统与ASP.NET本身路由系统是相对独立。...但是当我们采用基于Web Host方式(定义在程序集System.Web.Http.WebHost.dll)将ASP.NET Web API承载于一个ASP.NET Web应用时候,真正实现URL路由依然是...另一个同样通过字典类型表示只读属性DataTokens,我们应该不会感到陌生,至于通过制度属性Handler返回HttpMessageHandler对象是组成ASP.NET Web API消息处理管道核心...Web API管道HttpConfiguration对象,这依赖于我们对Web API寄宿方式,这并没有定义在ASP.NET Web API核心框架之中。

9.5K110
您找到你想要的搜索结果了吗?
是的
没有找到

.NET重构—单元测试代码重构

阅读目录: 1.开篇介绍 2.单元测试、测试用例代码重复问题(大量使用重复Mock对象及测试数据) 2.1.单元测试继承体系(利用超类来减少Mock对象使用) 2.1.1.公用MOCK对象;...,重构能有今天风光影响力完全少不了单元测试功劳;最近一段时间写单元测试用例时间远超过我写逻辑代码时间和多代码量,这是为什么?...;所以我们会尽可能多去写用例来达到最终理想效果; (总之把单元测试所有精力集中在可能会出问题地方,也是自己最担心地方,这个地方通常是逻辑比较复杂地方;) 2】单元测试、测试用例代码重复问题(...;Order实体是一个比较简单对象,属性也就只有两个,但是真实环境中不会这么简单,会有几十个字段都需要进行测试验证,再加上N多个用例,会使相同代码变很多; 那么我们同样需要将这部分代码提取出来放到基类中去...;其实从特定领域开发框架,特定领域架构我们能简单体会到一丝意思,面向特定领域单元测试框架是在单元测试框架基础之上进行二次领域相关封装;比如:如何很好将领域规则独立起来,如果在单元测试中使用这些独立起来领域规则

1.2K60

WEB核心:HTTP协议

概念 HTTP全称“超文本传输协议”,是一个应用层协议,对Web请求应答格式进行了规定。HTTP由两个程序实现,一个客户端程序,一个服务端程序。...使用GET进行请求时,实体为空(当然技术上也可以做到不为空,这是一个规范问题),常见表单提交使用POST,实体中存放是用户表单字段输入值。...Cookie技术有四个组件:①请求报文中Cookie首部行。②响应报文中Cookie首部行。③客户浏览器保存一个Cookie文件。④Web站点Cookie标识生成组件。 ?...网站A写下cookie存在于A域下,但网站A也可以写下B域cookie,这种cookie称为第三方cookie,一般是通过调用第三方SDK来写下。...出于对用户隐私保护,各大浏览器开始慢慢禁用三方Cookie,但商业力量总是一往无前,使用第一方Cookie代替三方Cookie等新方式也在慢慢出现。 版本演进 ?

65410

.NET单元测试艺术-1.入门

一、单元测试基础 1.1 什么是单元测试   一个单元测试是一段自动化代码,这段代码调用被测试工作单元,之后对这个单元单个最终结果某些假设进行检验。   单元测试几乎都是用单元测试框架编写。...单元测试容易编写,能够快速运行。单元测试可靠、可读,并且可维护。   只要产品代码不发生变化,单元测试结果是稳定。 1.2 与集成测试区别 ?...作为一名.NET程序员,如何在VS中安装NUnit并能够在VS中直接运行测试呢?   Step1.在NuGet中找到NUnit并安装 ?   ...目前为止,我们单元测试都还很简单也还比较顺利。但是,如果我们要测试方法依赖于一个外部资源,如文件系统、数据库、Web服务或者其他难以控制东西,那又该如何编写测试呢?...为了解决这些问题,我们需要创建测试存根、伪对象及模拟对象,下一篇核心技术将会介绍这些内容,让我们跟随Roy Osherove单元测试艺术》一起去探寻吧。 参考资料  ?

2K20

.NET单元测试艺术-3.测试代码

开篇:上一篇我们学习单元测试核心技术:存根、模拟对象和隔离框架,它们是我们进行高质量单元测试技术基础。本篇会集中在管理和组织单元测试技术,以及如何确保在真实项目中进行高质量单元测试。...当然,在.NET中我们也可以通过泛型来实现此模式,例如下面的代码: public abstract class GenericParserTests where T : IStringParser...你应该在分开、独立单元测试中验证多余关注点,这样才能发现真正失败地方。   ...(4)把单元测试和集成测试分开   掐面讨论了测试绿色安全区,我们需要就是准备一个单独单元测试项目,项目中仅包含那些在内存中运行,结果稳定,可重复执行测试。   ...如果没有回失败测试,可能就不会发现这些错误。 2.2 编写可维护性测试   可维护性是大多数开发者在编写单元测试时面对核心问题之一。

51430

.Net核心性能优化(GC篇)

1.前言 大部分对于.Net性能优化,都停留在业务层面。或者简单.Net框架配置层面。...本篇来看下.Net核心部分GC垃圾回收配置:保留VM,大对象,独立GC,节省内存等.Net8里面有很多各种GC配置,用以帮助你程序进行最大程度性能提升和优化。...文章分为两部分,第一个是GC有哪些动作可以性能最大优化,第二部分就是如何配置这些动作以便让你程序达到这些性能效果。...(默认值false,被系统回收) 7.高内存百分比DOTNET_GCHighMemPercent,当物理内存负载大于其指定时候,进行完整垃圾回收,以便腾出跟多空间(默认负载阈值介于90%到 97%...{ "System.GC.RetainVM": true } } } 其二:MSbuild配置 以保留VM为例: <Project Sdk="Microsoft.<em>NET</em>.Sdk

18520

Maven管理Spring Web项目集成JUnit单元测试

JUnit是一套优秀单元测试框架,而Maven是优秀Java项目构建和管理工具,两者结合可以很方便地对项目进行自动化测试。   ...该写法适用于没有直接放在classpath下一些web相关配置文件,例如本例展示就是放在常见WEB-INF目录下一个文件。   ...”信¥息”, “20131023102122”,”20131025102122”) ); } }   最后执行“RunAs -> JUnit Test”即可开始JUnit单元测试了,使用Maven...对于Java Web项目,某些业务类可能会带有使用ServletContext等Web容器相关类代码,对于这些类我们就不能直接用JUnit来测试了,因为默认JUnit是没有Web容器,我们通常需要借助其它相关辅助类或者模拟...原文地址:http://www.blogjava.net/qileilove/archive/2013/10/31/405835.html

49330

WebAssembly核心编程:wasm模块实例化N种方式

当我们在一个Web应用中使用WebAssembly,最终目的要么是执行wasm模块入口程序(通过start指令指定函数),要么是调用其导出函数,这一切前提需要创建一个通过WebAssembly.Instance...一、wasm模块实例化总体流程 虽然编程模式多种多样,但是wasm模块实例化总体采用如下流程: 步骤一:下载wasm模块文件; 步骤二:解析文件并创建通过WebAssembly.Module类型表示...我们从模块实例中提取并执行导出absolute函数。导入print函数会将绝对值计算表达式以如下形式输出到页面中。...属性返回正是我们需要wasm模块实例。...上面的三种激活wasm模块实例方式可以采用如下形式来实现。

13310

农行 DevOps 进行时之最佳实践分享:实现 .net web 单元测试代码覆盖率统计

IIS部署.netweb开发项目的单元测试、接口测代码覆盖率数据采集和基于 RunTime 单元测试代码覆盖率收集。...一、依赖IIS部署.netweb开发项目的单元测试、接口测代码覆盖率数据采集 VisualStudio2015企业版中提供了单元测试及代码覆盖率收集工具。...开发人员在安装有 VisualStudio2015企业版开发机器上运行单元测试时候,可以很方便地分析单元测试代码覆盖率情况,不需要进行特殊配置。...但运行在 IIS 中 ASP.NETWeb 应用程序,在程序运行期间去收集代码覆盖率时候,需要 TFS 生成流水线中使用命令行工具做单独配置。...二、基于RunTime单元测试代码覆盖率收集 个人网银系统使用自研 .net 框架 EBF 进行开发,EBF 框架采用模板和配置思想,将交易分为 Action-Operation-OpStep 三层

1.1K10

.Net虚拟机CLR核心内存模型

前言 CLR里面内存模型众多,这里个人认为有个极其重要内存模型组成链式结构。本篇来看下。...以上五个结构,组成内存模型示意图大致如下所示,它基本上包含了CLR里面用到必须场景。...当然,还有一些稀奇古怪功能,这里并没有过多展示。 3.解释 一:MethodTable:对象在CLR里面的实际类型表示,有的书上按照它名字叫做方法表,但是实际上体现不出来它功能。...二:EEClass:类型或者对象私有数据 三:PreCode:前置码,一般存放是表示方法被编译之前跳转或者需要经过地址 四:MethodDescChunk:它存放在MethodDesc之前,表示它之后有几个...五:MethodDesc:这个极其重要,表示是函数方法结构体。函数是否被编译,在内存里面的存放位置,以及函数对于GC影响。JIT编译时候需要编译哪个函数,都是MethodDesc来做。

16410

用命令行执行 .NET 单元测试时,如何仅执行符合某些条件单元测试

本文介绍使用 dotnet test 命令进行单元测试时候,过滤出被测项目中一部分测试出来,仅测试这一部分。...---- 背景 建一个 .NET Core 单元测试项目,例如项目名字是 Walterlv.Demo.Tests。...\Walterlv.Demo.Tests.dll 有时为了调试方便或输出分类数据等,要求执行一部分单元测试,这就需要过滤了。dotnet test 过滤使用 --filter 选项。...过滤 方法名 查找方法名包含某字符串单元测试并执行: dotnet test --filter TestMethod1 或者: dotnet test --filter Name~TestMethod1...分类与优先级 查找标记了 [TestCategory("CategoryA")] 方法并执行单元测试: dotnet test --filter TestCategory=CategoryA 查找标记了

2K20

.NET开发Minimal Web Api交互模块

今天给大家推荐一个.NET开发REPR(Request-Endpoint-Response)轮子Biwen.QuickApi。...Biwen.QuickApi提供一种简单集成Minimal Web Api交互模块 遵循了 REPR 设计。...特性 开箱即用Api路由 和 权限,Bind,validator体验 该库是NET WebApi/Minimal Api补充,性能≈MinimalApi,遥遥领先于MVC和WebApi,但是提供了最简单使用体验...描述 你可以重写QuickApiHandlerBuilder方法,以便于你自定义OpenApi描述 我们强烈建议您使用Refit风格直接撸接口,以便于您客户端和服务端保持一致接口定义 因为遵循REPR...风格,所以不推荐SwaggerUI或使用SwaggerStudio生成代理代码,除非您QuickApi定义相当规范(如存在自定义绑定,别名绑定等)!

17130
领券