NSubstitute】的更多相关文章

     Nsubstitute是一个开源的框架,源码是C#实现的.你可以在这里获得它的源码:https://github.com/nsubstitute/NSubstitute NSubstitute 更注重替代(Substitute)概念.它的设计目标是提供一个优秀的测试替代的.NET模拟框架.它是一个模拟测试框架,用最简洁的语法,使得我们能够把更多的注意力放在测试工作,减轻我们的测试配置工作,以满足我们的测试需求,帮助完成测试工作.它提供最经常需要使用的测试功能,且易于使用,语句更符合自然…
These are the contents of my training session about unit testing, and also have some introductions about how could we write better unit tests with NSubstitute framework. The related sessions: Unit Testing with NSubstitute Building the Testing Pipelin…
之前学习了单元测试的基础知识,以及桩对象和模拟对象的不同作用.但在实际应用中,往往不会直接手写桩对象或者模拟对象,而是使用隔离框架动态的创建这些对象,这可以让测试变得更简便.快捷,还可以更好地应对复杂的测试.这里学习的便是隔离框架的一种——Nsubstitute. 一 开始使用NSubstitute 在前面有一个测试场景为:使用LogAnalyzer.Analyze方法分析文件,如果文件名过短,就记录日志,为了测试LogAnalyzer类与ILogger实现之间的交互,需要手写一个实现了ILog…
https://github.com/nsubstitute/NSubstitute http://nsubstitute.github.io/help/creating-a-substitute/…
NSubstitute是一个.Net环境使用的,简洁,语法友好的Mock库.语法简洁的缺点是有一些失败的用法很难察觉和检测.比如试图mock一个非虚拟成员-NSubstitute不能看到这些成员所以不能沟通sub.Received().NonVirtualCall()的问题.多亏了现在有Roslyn编译器.我们现在有了能检测这些问题的方法. 使用用法: 使用Nuget安装NSubstitute.Analyzers.CSharp库. Install-Package NSubstitute.Anal…
.NET测试--模拟框架NSubstitute .NET测试 NSubstitute在GitHub的开源地址:https://github.com/nsubstitute/nsubstitute/downloads 入门 现在假设我们有一个基本的计算器界接口: public interface ICalculator  {  int Add(int a, int b);  string Mode { get; set; }  event EventHandler PoweringUp;  } …
public class LockTest { private IDatabase _database; private readonly Random _random = new Random(); private int _num = 0; [SetUp] public void SetUp() { _num = 0; //信号量,同时访问的线程1 var slim = new SemaphoreSlim(1, 1); //mock redis的接口 _database = Substitu…
2016.6.27 微软已经正式发布了.NET Core 1.0 RTM,但是工具链还是预览版,同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The State of .Net Core Testing Today 就将各个开源测试库的目前进展进行了汇总.本文我们的目的是在我们构建我们应用程序的时候能够进行测试,如何使用XUnit结合你可以通过为你的项目添加不同的测试用例NSubstitute进行单元测试,同时对整个项目进行集成测试.这次我们使用Vis…
0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使用U3D 5.3.X之后版本已经集成的单元测试模块Editor Test Runner. 0x01 你好,TDD TDD,测试驱动开发改变了我们常见的工作流程,不要求先写逻辑代码,反而要求先完成测试代码.待测试代码完成之后,我们再将目光转移到逻辑代码,根据测试的要求,完成逻辑代码,使之能够通过经过拆…
0x00 单元测试Pro & Con 最近尝试在我参与的游戏项目中引入TDD(测试驱动开发)的开发模式,因此单元测试便变得十分必要.这篇博客就来聊一聊这段时间的感悟和想法.由于游戏开发和传统软件开发之间的差异,因此在开发游戏,特别是使用Unity3D开发游戏的过程中编写单元测试往往会面临两个主要的问题: 游戏开发中会涉及到很多的I/O操作处理,以及视觉和UI的处理,而这个部分是单元测试中比较难以处理的部分. 具体到使用Unity3D开发游戏,我们自然而然的希望能够将测试的框架集成到Unity3D…
This essay is a part of my knowledge sharing session slides which are shared for development and quality team. I want to share some contents here and hope that may trigger some brainstorming or thoughts about how could we do better test automation by…
在博客园学习很长时间了,今天终于自己也开通了博客,准备分享一些感悟和经验.首先感谢博客园园主提供了这么好的程序员学习交流平台,也非常感谢张善友.dax.net.netfocus.司徒正美 等技术大牛的无私分享,从他们身上学到了很多.还有我最近一直关注的田园里的蟋蟀,分享了很多新的技术和思想方法,在此也深深地感谢! 我自己一开始工作(2002年)就从事WEB开发(ASP.NET方向),到现在已经13个年头了,从初级程序员到技术经理.开发部经理.项目总监,再合伙创业,因缺乏企业经营经验,创业不算很成…
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 介绍 创建测试项目 准备测试基类 创建第一个测试 测试异常 在测试中使用仓储 测试异步方法 小结 介绍 在这篇博客中,我们来说说基于ABP项目的单元测试.说到单元测试(Unit Test),估计很多人只有在上<软件工程>这门课时才接触过这个概念,平时写代码基本不写测试的,测试的唯一办法就是代码写完后跑一遍,看看符不符合预期的效果,如果符合就算完成任务了.但是,在大公司或者项目比较大(比如开发一个框架)的时候,单元测…
Awesome系列的.Net资源整理.awesome-dotnet是由quozd发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等. 算法与数据结构(Algorithms and Data structures) Algorithmia - Algorithm and data-structure library for .NET 3.5 and up. Algorithmia contains sophisticated algorithms…
awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等. https://github.com/jobbole/awesome-dotnet-cn (注:下面用 [$] 标注的表示收费工具,但部分收费工具针对开源软件的开发/部署/托管是免费的) API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台.官网 ASP.NE…
目录 API 应用框架(Application Frameworks) 应用模板(Application Templates) 人工智能(Artificial Intelligence) 程序集处理(Assembly Manipulation) 资源(Assets) 认证和授权(Authentication and Authorization) 自动构建(Build Automation) 缓存(Caching) CLI CLR CMS 代码分析和度量(Code Analysis and Met…
http://xunit.github.io/docs/getting-started-desktop.html 1. 新建一个类库项目 2. 通过NuGet引入xunit,Shouldly,xunit.runner.visualstudio三个程序包. 3. 编写代码 public class Class1 { public int Add(int x, int y) { return x + y; } public string Reverse(string str) { return ne…
http://scottge.net/2015/07/08/a-complete-list-of-net-open-source-developer-projects/?utm_source=tuicool NET Implementations .NET Core – Core .NET Framework C# Native – Compiles C# to native. Cosmos – C# Open Source Managed Operating System, an operat…
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:虽然ABP为大家提供了测试的脚手架了,不过有些小技巧还是需要自己探索的. ASP.NET Boilerplate(ABP)默认使用的单元测试的框架是xUnit,并且引入了NSubstitute这个便捷的Mock框架.但是有些具体的用法和技巧还是需要自己探索的.下面介绍两个小技巧. 为AppService注入Mock接口 假设我有一个和钉钉相关的AppService(接口名称为IDingtalk…
开篇:上一篇我们学习基本的单元测试基础知识和入门实例.但是,如果我们要测试的方法依赖于一个外部资源,如文件系统.数据库.Web服务或者其他难以控制的东西,那又该如何编写测试呢?为了解决这些问题,我们需要创建测试存根.伪对象及模拟对象.这一篇中我们会开始接触这些核心技术,借助存根破除依赖,使用模拟对象进行交互测试,使用隔离框架支持适应未来和可用性的功能. 系列目录: 1.入门 2.核心技术 3.测试代码 一.破除依赖-存根 1.1 为何使用存根? 当我们要测试的对象依赖另一个你无法控制(或者还未实…
(注:下面用 [$] 标注的表示收费工具,但部分收费工具针对开源软件的开发/部署/托管是免费的) API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台.官网 ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设备.官网 ServiceStack:架构缜密.速度飞快.令人愉悦的 web 服务.官网 Nelibur:Nelibur 是一个使用纯 WCF 构建…
离上一篇又过去了一个月,时间比较紧,后续估计会更紧,所以这次将放出更多公共操作类及配套的CodeSmith模板,本篇将简要介绍新放出的重要功能,供有兴趣的同学参考. 重要更新 这一次对两个VS解决方案均做了大量调整,包含项目结构及命名空间. Util解决方案的目录截图如下. 除了少数需要配置的集成测试外,大部分单元测试已放出. Applications项目示例的目录截图如下. Applications项目示例虽然包含的东西不多,却建了不少项目,可能并不符合你的胃口,我将在下一篇文章向你演示其它项…
伯乐在线已在 GitHub 上发起「DotNet 资源大全中文版」的整理.欢迎扩散.欢迎加入. https://github.com/jobbole/awesome-dotnet-cn (注:下面用 [$] 标注的表示收费工具,但部分收费工具针对开源软件的开发/部署/托管是免费的) API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台.官网 ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛…
阅读目录: 1.开篇介绍 2.尽量使用Lambda匿名函数调用代替反射调用(走进声明式设计) 3.被忽视的特性(Attribute)设计方式 4.扩展方法让你的对象如虎添翼(要学会使用扩展方法的设计思想) 5.别怕Static属性(很多人都怕Static在Service模式下的设计,其实要学会使用线程本地存储(ThreadStatic)) 6.泛型的协变与逆变(设计架构接口(Interface)时要时刻注意对象的协变.逆变) 7.使用泛型的类型推断(还在为参数类型烦恼吗) 8.链式编程(设计符合…
阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: 2.1.2.公用的MOCK行为: 2.1.3.公用的MOCK数据: 3.LINQ表达式的重构写法(将必要的LINQ写成普通的Function穿插在LINQ表达式中) 4.面向特定领域的单元测试框架(一切原则即是领域驱动) 4.1.分散测试逻辑.日志记录(让测试逻辑可以重组,记录形式为领域模型) 4.…
转自:http://blog.jobbole.com/96676/ API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台. ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设备. ServiceStack :架构缜密.速度飞快.令人愉悦的 web 服务. Nelibur:Nelibur 是一个使用纯 WCF 构建的基于消息的 web 服务框架.Neli…
转自:https://github.com/jobbole/awesome-dotnet-cn 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等. Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大.这也是我们发起这个开源项目的初衷. (…
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(二)基础类库介绍 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(三)命令行工具集 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(四)服务端介绍 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(五)客户端介绍 这是什么系统?…
单元测试可以有效的可以在编码.设计.调试到重构等多方面显著提升我们的工作效率和质量.github上可供参考和学习的各种开源项目众多,NopCommerce.Orchard等以及微软的asp.net mvc.entity framework相关多数项目都可以作为学习单元测试的参考.单元测试之道(C#版本)..NET单元测试艺术和C#测试驱动开发都是不错的学习资料. 1.单元测试的好处 (1)单元测试帮助设计 单元测试迫使我们从关注实现转向关注接口,编写单元测试的过程就是设计接口的过程,使单元测试通…
http://personball.com/powershell/2016/07/15/powershell-tips 定制自己的powershell,减少重复工作 安装一系列自己的常用nuget包 项目做多了,有时候发现自己新建项目时,总是要花费半天或者几十分钟去新建一个新项目,一个一个地安装完所有常用的包. 对于码农,这重复劳动不可忍! 打开nuget包管理控制台,输入code $profile,在打开的文件中,输入如下脚本 function Install-PackageForAbpUni…