开篇:上一篇我们学习基本的单元测试基础知识和入门实例。但是,如果我们要测试的方法依赖于一个外部资源,如文件系统、数据库、Web服务或者其他难以控制的东西,那又该如何编写测试呢?...这一篇中我们会开始接触这些核心技术,借助存根破除依赖,使用模拟对象进行交互测试,使用隔离框架支持适应未来和可用性的功能。 一、破除依赖-存根 1.1 为何使用存根? ...它的设计目标是提供一个优秀的测试替代的.NET模拟框架。它是一个模拟测试框架,用最简洁的语法,使得我们能够把更多的注意力放在测试工作,减轻我们的测试配置工作,以满足我们的测试需求,帮助完成测试工作。...四、小结 本篇我们学习了单元测试的核心技术:存根、模拟对象以及隔离框架。使用存根可以帮助我们破除依赖,模拟对象与存根的区别主要在于存根不会导致测试失败,而模拟对象则可以。...(1)Roy Osherove 著,金迎 译,《单元测试的艺术(第2版)》 (2)匠心十年,《NSubsititue完全手册》 (3)张善友,《单元测试模拟框架:NSubstitute》 作者:
虽然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的核心框架之中。
阅读目录: 1.开篇介绍 2.单元测试、测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象;...,重构能有今天的风光影响力完全少不了单元测试的功劳;最近一段时间写单元测试用例的时间远超过我写逻辑代码的时间和多的多的代码量,这是为什么?...;所以我们会尽可能的多去写用例来达到最终的理想效果; (总之把单元测试的所有精力集中在可能会出问题的地方,也是自己最担心的地方,这个地方通常是逻辑比较复杂的地方;) 2】单元测试、测试用例代码重复问题(...;Order实体是一个比较简单的对象,属性也就只有两个,但是真实环境中不会这么简单,会有几十个字段都需要进行测试验证,再加上N多个用例,会使相同的代码变的很多; 那么我们同样需要将这部分的代码提取出来放到基类中去...;其实从特定领域开发框架,特定领域架构我们能简单的体会到一丝意思,面向特定领域单元测试框架是在单元测试框架的基础之上进行二次领域相关的封装;比如:如何很好的将领域规则独立起来,如果在单元测试中使用这些独立起来的领域规则
概念 HTTP全称“超文本传输协议”,是一个应用层协议,对Web的请求应答格式进行了规定。HTTP由两个程序实现,一个客户端程序,一个服务端程序。...使用GET进行请求时,实体为空(当然技术上也可以做到不为空,这是一个规范问题),常见的表单提交使用POST,实体中存放的是用户表单字段的输入值。...Cookie技术有四个组件:①请求报文中的Cookie首部行。②响应报文中的Cookie首部行。③客户浏览器保存一个Cookie文件。④Web站点的Cookie标识生成组件。 ?...网站A写下的cookie存在于A的域下,但网站A也可以写下B域的cookie,这种cookie称为第三方cookie,一般是通过调用第三方的SDK来写下的。...出于对用户隐私的保护,各大浏览器开始慢慢的禁用三方Cookie,但商业的力量总是一往无前的,使用第一方Cookie代替三方Cookie等新的方式也在慢慢的出现。 版本演进 ?
一、单元测试基础 1.1 什么是单元测试 一个单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验。 单元测试几乎都是用单元测试框架编写的。...单元测试容易编写,能够快速运行。单元测试可靠、可读,并且可维护。 只要产品代码不发生变化,单元测试的结果是稳定的。 1.2 与集成测试的区别 ?...作为一名.NET程序员,如何在VS中安装NUnit并能够在VS中直接运行测试呢? Step1.在NuGet中找到NUnit并安装 ? ...目前为止,我们的单元测试都还很简单也还比较顺利。但是,如果我们要测试的方法依赖于一个外部资源,如文件系统、数据库、Web服务或者其他难以控制的东西,那又该如何编写测试呢?...为了解决这些问题,我们需要创建测试存根、伪对象及模拟对象,下一篇核心技术将会介绍这些内容,让我们跟随Roy Osherove的《单元测试的艺术》一起去探寻吧。 参考资料 ?
开篇:上一篇我们学习单元测试和核心技术:存根、模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础。本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试。...当然,在.NET中我们也可以通过泛型来实现此模式,例如下面的代码: public abstract class GenericParserTests where T : IStringParser...你应该在分开的、独立的单元测试中验证多余的关注点,这样才能发现真正失败的地方。 ...(4)把单元测试和集成测试分开 掐面讨论了测试的绿色安全区,我们需要的就是准备一个单独的单元测试项目,项目中仅包含那些在内存中运行,结果稳定,可重复执行的测试。 ...如果没有回失败的测试,可能就不会发现这些错误。 2.2 编写可维护性的测试 可维护性是大多数开发者在编写单元测试时面对的核心问题之一。
大部分微软平台的开发人员如果选择开发框架只能是在ASP.NET WEBFORM和ASP.NET MVC两个之间选择。 而Nancy是不依赖于这两个框架的独立的一个框架。...它更多的是借鉴了Ruby的一些特性。 Nancy 是一个基于 .NET 和 Mono 平台用于构建轻量级基于 HTTP 的 Web 服务。...官方网站 http://nancyfx.org/ 更详细的介绍参见 http://blog.spinthemoose.com/2011/07/18/nancy-a-micro-web-framework-for-net.../ 顺便介绍个使用Nancy 做的Quartz.net的web控制台 https://quartznetwebconsole.codeplex.com/ 参考文章: 使用Nancy和Simple.Data...两个轻量级的框架打造一个分布式开发系统(一) Frictionless .NET Web App Development with Nancy Frictionless .NET Web App Development
今天测试.net 2.0的WebService,发现了一个大问题。就是无法获取参数,参数永远是null。当然了使用.net调用没有任何问题,web测试页也正常。...不论是Delphi7还是java调用的结果的都是一样的,难道是.net 2.0的Bug?...测试结果发现:值类型参数全部为缺省值,引用类型全部为null WebService的代码如下: [WebMethod] public string EchoString(string args...---------------------------------------------------------------------------------- 在不断尝试中发现vs2003生成的web...Services,delphi调用的时候不会有任何问题,即使是delphi2006也无法正常调用.net 2.0的Web Service.
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
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
当我们在一个Web应用中使用WebAssembly,最终的目的要么是执行wasm模块的入口程序(通过start指令指定的函数),要么是调用其导出的函数,这一切的前提需要创建一个通过WebAssembly.Instance...一、wasm模块实例化总体流程 虽然编程模式多种多样,但是wasm模块的实例化总体采用如下的流程: 步骤一:下载wasm模块文件; 步骤二:解析文件并创建通过WebAssembly.Module类型表示的...我们从模块实例中提取并执行导出的absolute函数。导入的print函数会将绝对值计算表达式以如下的形式输出到页面中。...属性返回的正是我们需要的wasm模块实例。...上面的三种激活wasm模块实例的方式可以采用如下的形式来实现。
IIS部署.net下web开发项目的单元测试、接口测代码覆盖率数据采集和基于 RunTime 的单元测试代码覆盖率收集。...一、依赖IIS部署.net下web开发项目的单元测试、接口测代码覆盖率数据采集 VisualStudio2015企业版中提供了单元测试及代码覆盖率收集工具。...开发人员在安装有 VisualStudio2015企业版的开发机器上运行单元测试的时候,可以很方便地分析单元测试的代码覆盖率的情况,不需要进行特殊的配置。...但运行在 IIS 中的 ASP.NET 下 Web 应用程序,在程序运行期间去收集代码覆盖率的时候,需要 TFS 生成流水线中使用命令行工具做单独的配置。...二、基于RunTime的单元测试代码覆盖率收集 个人网银系统使用自研的 .net 框架 EBF 进行开发,EBF 框架采用模板和配置的思想,将交易分为 Action-Operation-OpStep 三层
ModelBinder可以看成是整个Model绑定系统的核心,我们先来认识这个重要的组件。[本文已经同步到《How ASP.NET MVC Works?》...在一个通过Visual Studio的ASP.NET MVC项目模板创建的空Web应用中定义了如下几个类型,其中FooModelBinder和BarModelBinder是显现了IModelBinder...1: foo: FooModelBinder 2: bar: N/A 3: baz: N/A 三、ModelBinders 如果我们不曾通过ModelBinderAttribute特性为某个...不过在ASP.NET MVC现有的应用编程接口中并没有定义任何一个实现该接口的ModelBinderProvider类型。...围绕着ModelBinder的Model绑定系统中的核心组件之间的关系基本上可以通过下图所示的UML来表示。 ?
前言 CLR里面内存模型众多,这里个人认为有个极其重要的内存模型组成的链式结构。本篇来看下。...以上五个结构,组成的内存模型示意图大致如下所示,它基本上包含了CLR里面用到的必须场景。...当然,还有一些稀奇古怪的功能,这里并没有过多展示。 3.解释 一:MethodTable:对象的在CLR里面的实际类型表示,有的书上按照它的名字叫做方法表,但是实际上体现不出来它的功能。...二:EEClass:类型或者对象的私有数据 三:PreCode:前置码,一般的存放的是表示方法被编译之前的跳转或者需要经过的地址 四:MethodDescChunk:它存放在MethodDesc之前,表示它之后有几个...五:MethodDesc:这个极其重要,表示的是函数方法的结构体。函数是否被编译,在内存里面的存放位置,以及函数对于GC的影响。JIT编译的时候需要编译的哪个函数,都是MethodDesc来做。
1.前言 .NET8正式版于今天发布了,很多人期待已久。...我们继续来看下核心部分的技术,在JIT里面个人认为核心的部分不是:MSIL二进制,BasickBlock,IR中间表示,机器码生成,而是分层编译。本篇来看下它的原理。...2.概述 分层编译在.NET Core2.0中引入,在.NET Core3.0中启用。...在.NET8里面已经完全成熟,可以经过分层编译优化(GDV,PGO,OSR,Quick等等)之后的效果达到或者接近C++的性能。...在.NET Framework以及.NETCore2.0之前,托管函数被JIT编译之后,它的函数入口点对应的是固定的,无法更改。也就意味着,一旦托管函数被编译,它不能够进行机器码层面的优化。
前言 今天分享一个.NET开源、强大的Web报表统计系统:CellReport。 项目官方介绍 CellReport 诞生的初衷是为了解决日常快速制作统计报表的需要。...CellReport 是一个为复杂统计报表为核心目标的制作、运行工具。....NET6驱动 高性能:享受 .NET6 的高效运行,占用极少的内存(300M左右),运行各种复杂的中国式报表。...通用数据源:数据源支持各种.net支持的数据库、excel文件、api服务、本软件制作的报表、其他报表软件的报表(如:reporting service 等)。...技术实现 前端设计器采用基于vue、luckysheet、echarts等前端技术实现的网页方式 后端报表引擎核心基于.NET6实现。
本文介绍使用 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 查找标记了
大家好,又见面了,我是你们的朋友全栈君。 正在进行Map API到 .Net Framework 平台移植。 涉及到 Http Connection. 其中可能用到 Web proxy的设置。...有两种简单的方法。...NetworkCredential("user name", "password ", "domain"); WebRequest.DefaultWebProxy = proxy; 还有一种是设置全局 Web...这里主要说明在 Windows Mobile 平台上可用的方法。
今天给大家推荐一个.NET开发的REPR(Request-Endpoint-Response)轮子Biwen.QuickApi。...Biwen.QuickApi提供一种简单集成的Minimal Web Api交互模块 遵循了 REPR 设计。...特性 开箱即用的Api路由 和 权限,Bind,validator体验 该库是NET WebApi/Minimal Api的补充,性能≈MinimalApi,遥遥领先于MVC和WebApi,但是提供了最简单的的使用体验...描述 你可以重写QuickApi的HandlerBuilder方法,以便于你自定义的OpenApi描述 我们强烈建议您使用Refit风格直接撸接口,以便于您的客户端和服务端保持一致的接口定义 因为遵循REPR...风格,所以不推荐SwaggerUI或使用SwaggerStudio生成代理代码,除非您的QuickApi定义的相当规范(如存在自定义绑定,别名绑定等)!
虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要求它实现...[本文已经同步到《How ASP.NET Web API Works?》]...HttpController可以视为对ASP.NET Web API的消息处理管道的延续。...通过“ASP.NET Web API标准的“管道式”设计”的介绍我们知道位于管道末端的是一个HttpRoutingDispatcher对象。...本章的核心就在于剖析此方法的实现逻辑。
领取专属 10元无门槛券
手把手带您无忧上云