摘要: 在实际的项目开发中我们可能经常要修改已有的代码,可能我们经常说开闭原则对已有的代码不准修改,但是实际上很难,那么下面的3种方法也许能帮助我们改善对代码的修改。 1:新生方法 有时候在我们开发的时候需要像系统加入新的功能时候这个时候我们就可能改变我们原有方法的结构。那么下面有一个简单例子 以前添加用户 阅读全文
posted @ 2016-01-06 10:22 朝向远方 阅读(4169) 评论(1) 推荐(1) 编辑
摘要: 如果想保证业务层测试的正确性,那么我们必须要对数据库进行测试。但是目前我还没想到在内存中去进行数据库的测试,只能进行集成测试。那么下面来讲一下关于数据层的测试。因为在数据库的内部我们无法控制我们只能通过黑盒测试,给予值然后返回我们想要的预期效果来判断是否成功。但是在测试中我们必须要保证单一性,比喻... 阅读全文
posted @ 2015-12-21 09:19 朝向远方 阅读(1151) 评论(1) 推荐(1) 编辑
摘要: 在大多时候代码的测试很难,因为很多代码无法进行参数注入,那么这个时候有一款不受限的隔离框架TypeMock供你使用,不过遗憾这款软件是付费的一个隔离框架,有15天的免费使用权,如果能解决你现有的问题我想这份费用并不能算多。TypeMock的官方下载http://www.typemock.com/... 阅读全文
posted @ 2015-12-17 12:15 朝向远方 阅读(1360) 评论(0) 推荐(2) 编辑
摘要: 前面说了手工创建模拟对象的示例,这一章主要说一下使用模拟框架创建示例。我使用的模拟框架是NSubstitute1:如何创建伪对象我们知道手动编写伪对象显得很笨拙(当然按照实际情况),那么用隔离框架创建伪对象就会很简单快速,那么我们先看一幅图那么首先我们创建一个个接口1 public interf... 阅读全文
posted @ 2015-12-08 11:35 朝向远方 阅读(1486) 评论(0) 推荐(1) 编辑
摘要: 在单元测试中存根和模拟对象处于一个非常重要的地位以下我就来说说我对两者的理解。1:什么是交互测试工作单元最终的三种结果类型:基于值的测试:验证函数返回值基于状态的测试:验证通过被测试函数之后状态的变化交互测试:验证一个对象如何向另一个对象(一般是第三方服务)发送消息(调用方法)重点说一下交互测试:如... 阅读全文
posted @ 2015-12-04 15:49 朝向远方 阅读(1694) 评论(0) 推荐(0) 编辑
摘要: 前言:单元测试的时候经常出现一个对象依耐另一个你无法控制的对象,所以这个时候你必须去替代成一个你自己可以控制的对象来摆脱依耐。1:为什么要破除依赖1.1:运行速度慢比喻我们要通过用户Id判断用户是否存在,那么我们这个方法就会依赖数据库。这样就成了集成测试,如果大量的测试就会出现速度慢。1.2:需要... 阅读全文
posted @ 2015-12-02 15:19 朝向远方 阅读(1208) 评论(0) 推荐(4) 编辑
摘要: 通常的单元测试框架都以他们支持的语言的开头字母加上Unit作为名字,他们统称为xUnit框架。C++的叫做CppUnit,Java的叫做JUnit,.Net的叫做NUnit。当然不是所有的都这么命名,但大部分如此。下面我主要讲解一下NUni的一些基本操作。1:Nunit两个重要属性1.1:[Test... 阅读全文
posted @ 2015-11-27 11:48 朝向远方 阅读(5219) 评论(2) 推荐(0) 编辑
摘要: 1:传统的编码方法2:测试驱动开发它的特点如下2.1:编写一个失败的单元测试,来证明产品代码中存在缺陷,来进行修复这个缺陷比喻我们要实现一个用户的添加方法User.Add,我们就会写一个测试方法来验证这个User.Add。当然在最初的测试肯定会失败,因为我们根本就没有编写User.Add的编码所以运... 阅读全文
posted @ 2015-11-25 14:55 朝向远方 阅读(2235) 评论(24) 推荐(5) 编辑
摘要: 反射(Reflection)可以在运行时获 得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等反正说白了就是通过反射能够获取一个未知类的类型。下面通过代码来讲解1:反射的基本用法public class R... 阅读全文
posted @ 2015-11-24 11:05 朝向远方 阅读(8174) 评论(0) 推荐(0) 编辑
摘要: 特性应该我们大多接触过,比喻经常使用的[Obsolete],[Serializable]等下面我就主要介绍一个特性的一些用法摘自MSDN定义:用以将元数据或声明信息与代码(程序集、类型、方法、属性等)相关联。意思就是把我们自定义的特性或者微软自带的特性和我们的代码进行组合,其实就是为我们某些代码附加... 阅读全文
posted @ 2015-11-19 21:07 朝向远方 阅读(3852) 评论(1) 推荐(2) 编辑
摘要: 在代码进行优化的时候,发现了switch case太长,有的竟然长达30个远远超过一屏这样在代码的可读性来说很差。特别在我们看代码的时候要拉下拉框我个人觉得这是不合理的。但是我不建议有switch就进行反射或委托来解决。看实际的情况比喻10个以为还是可以接受的。因为switch看起来更加的直接而且... 阅读全文
posted @ 2015-11-18 20:24 朝向远方 阅读(5395) 评论(3) 推荐(2) 编辑
摘要: 在现实生活中我们也经常会用到适配器,比喻我们经常用的电脑适配器,你说不用适配器怎么充电吧,但是我们发现电脑适配器也有条件,第一你得有电吧,没有电的话就没有适配器什么事情,第二 你得有电脑吧,没有电脑适配器怎么用。所以在这个简单例子中我们发现我们为啥使用适配器,那是因为我不使用适配器我没法给我的电脑... 阅读全文
posted @ 2015-11-13 10:45 朝向远方 阅读(1164) 评论(2) 推荐(0) 编辑
摘要: 前言:在工作发现接口至关重要,特别需要把接口的注释写清楚,能调用的同事知道这个接口是干嘛用的,要传递什么参数等,在这里我做了一个简单的接口并生成帮助帮助,供大家相互学习,有好的可以提出来我继续改进。 第一步:建立一个用户接口(明确这个接口的作用) 按照Add,Delete,Update,Get模式来 阅读全文
posted @ 2015-11-02 19:26 朝向远方 阅读(2200) 评论(0) 推荐(4) 编辑
摘要: 1:简单工厂模式简单工厂模式我个人觉得就是为了让客户程序和类的对象分离,用户不在考虑去调用哪个方法,我只需要告诉你我的一些特征就可以调用相应的对象,以下用来自不同国籍的人来说明a:如果现在做一个关于统计中国人,美国人,和日本人的一个功能,第一个我们考虑创建一个接口关于对人的基本操作 1 public... 阅读全文
posted @ 2015-10-26 09:47 朝向远方 阅读(825) 评论(0) 推荐(2) 编辑
摘要: 前言:由于现在日志非常重要,但是在哪里打写日志比较好呢,我选择的是在global中,把错误代码网上抛,而不是在底层写大量的try catch然后在catch中来写日志,每个catch中的写日志这样就会避免了很多重复代码。当然这是目前我们采取的一个方法,大家可以提出更好地方法来管理日志,下面我开始写代 阅读全文
posted @ 2015-10-09 21:08 朝向远方 阅读(1626) 评论(0) 推荐(0) 编辑