单元测试(unit testing),对软件中的最小单元进行检查和验证,其一般验证对象是一个函数或者一个类。

Team Test 是 Visual Studio 集成的单元测试框架,它支持:

  • 测试方法存根 (stub) 的代码生成。

  • 在 IDE 中运行测试。

  • 合并从数据库中加载的测试数据。

  • 测试运行完成后,进行代码覆盖分析。

Microsoft.VisualStudio.TestTools.UnitTesting dll

通过上面的方法,我们可以看到,写UT 先arrange,再写act,最后是assert.

推荐Moq,对EF的方法和类进行Mock。mock之前需要实现这三个接口:IDbAsyncEnumerator,IDbAsyncEnumerable,IDbAsyncQueryProvider 。其实mock也是'action->assertion' 方式。

不同的在于stub是用的状态验证而mock使用的是行为验证。如果要基于stub编写状态验证的方法,需要写一些额外的代码来进行验证。而Mock对象用的是行为验证,并不需要写太多的额外代码。

代码覆盖

单元测试的一个关键度量是决定在单元测试运行时测试了多少代码。该度量称为代码覆盖,Team Test 包含了一个代码覆盖工具,可以详细解释被执行代码的百分率,并突出显示哪些代码被执行,那些没有被执行。

最佳实践

在结束前我们回顾几种单元测试的最佳实践。首先,TDD 是非常有价值的实践。在所有现有的开发方法中,TDD 可能是多年来根本上改进开发且投资成本最小的一种。每个 QA 工程师都会告诉您,开发人员在没有相应的测试前不会写出成功的软件。有了 TDD,实践是在实现前编写测试,并且理想情况是,编写的测试可以成为无需人工参与执行的构建脚本的一部分。需要训练来开始养成习惯,但一旦建立习惯后,不使用 TDD 方法编码就像开车时不系安全带一样。

对于测试本身,有一些额外的原则可以帮助成功进行测试:

  • 避免测试产生依赖性,这样测试需要按照特定的顺序执行。每个测试都应该是自治的。

  • 使用测试初始化代码验证测试清除已经成功执行,如果没有则在执行测试前重新执行清除。

  • 在编写任何产品代码的实现前编写测试。

  • 对于产品代码中的每个类创建一个测试类。这样可以简化测试的组织,并可以容易地选择在何处放置每个测试。

  • 使用 Visual Studio 生成初始化的测试项目。这样可以大大减少手工设置测试项目并与产品项目关联的步骤。

  • 避免创建其他依赖计算机的测试,例如依赖特定的目录路径的测试。

  • 创建模拟对象 (mock object) 来测试接口。模拟对象通常在需要验证 API 符合所需功能的测试项目中实现。

  • 在继续创建新的测试前验证所有测试运行成功。这样可以保证在破坏代码后立刻进行修正。

  • 可以最大化无需人工参与执行的测试代码。在依赖于手工测试前,必须完全肯定无法采用合理的无需人工参与执行的测试方案。

visual studio 单元测试的认识的更多相关文章

  1. Visual Studio 单元测试之五---数据库测试

    原文:Visual Studio 单元测试之五---数据库测试 数据库的单元测试主要是测试数据库中的数据是否符合特定的条件,Visual Studio 2010支持下面几种数据的单元测试类型(Visu ...

  2. Visual Studio 单元测试之六---UI界面测试

    原文:Visual Studio 单元测试之六---UI界面测试 UI界面测试其实就是录制操作路径(Mapping),然后按照路径还原操作顺序的一个过程.这个方法对于Winform和Webform都同 ...

  3. Visual Studio 单元测试之三---压力测试

    原文:Visual Studio 单元测试之三---压力测试 我们都知道大名鼎鼎的LoadRuner,但是很少有人知道Visual Studio自带的Test也可以做些简单的压力测试,下面我们就介绍一 ...

  4. Visual Studio 单元测试之四---Generic测试

    原文:Visual Studio 单元测试之四---Generic测试 这里的Generic我觉得理解为外部测试更合适.因为在这种测试模式下Visual Studio只是启动一个外部的程序,然后通过返 ...

  5. Visual Studio 单元测试之二---顺序单元测试

    原文:Visual Studio 单元测试之二---顺序单元测试 此文是上一篇博文:Visual Studio 单元测试之一---普通单元测试的后续篇章.如果读者对Visual Studio的单元测试 ...

  6. Visual Studio 2010 单元测试之一---普通单元测试

    原文:Visual Studio 2010 单元测试之一---普通单元测试 本文以Visual Studio 2010为例,来介绍如何在Visual Studio里面进行单元测试. 首先来介绍普通单元 ...

  7. C# Note31: 如何使用Visual Studio做单元测试

    待更! 使用Visual Studio 2013进行单元测试--初级篇 带你玩转Visual Studio——单元测试(C++例)

  8. 软件工程-构建之法 Visual Studio开发平台的安装与单元测试

    一.前言 自从开始了大三下的生活,学校开设一门课程“软件工程”,刚好我们是第一届进行课程改革,不在像以前那样背背概念,考前进行好好突击,然后考试就能过,最后毕业了发现软件工程课程到底我们在其中学习了什 ...

  9. Visual Studio中UnitTesting单元测试模板代码生成

             在软件研发过程中,单元测试的重要性直接影响软件质量.经验表明一个尽责的单元测试方法将会在软件开发的某个阶段发现很多的Bug,并且修改它们的成本也很低.在软件开发的后期阶段,Bug的发 ...

随机推荐

  1. es-09-spark集成

    es和spark的集成比较简单, 直接使用内部封装的一些方法即可 版本设置说明: https://www.elastic.co/guide/en/elasticsearch/hadoop/curren ...

  2. spring boot实现ssm(1)功能

    前面完成了ssm的整合, 整个过程可以说很繁杂, 各种配置, 很容易让人晕掉. 这里使用spring boot 的方式来实现ssm(1)中的功能. 一. 建项目 1. 使用 idea 来创建 spri ...

  3. ActiveMQ——activemq的使用java代码实例(精选)

    ActiveMQ 在java中的使用,通过单例模式.工厂实现 Jms规范里的两种message传输方式Topic和Queue,两者的对比如下表():   Topic Queue 概要 Publish  ...

  4. mac 安装 python mysqlclient 遇到的问题及解决方法

    在 mac 上安装 mysqlclient 遇到了一些问题,查找资料很多人都遇到了同样的问题.通过资料和试验,成功了.这里记录一下,希望帮到遇到同样问题的人. 本人使用python3, 安装步骤如下: ...

  5. GCC 多文件编辑

    #include <stdio.h> int plus(int a, int b); int minus(int a, int b); int multiply(int a, int b) ...

  6. java 正则例子

    1.不易开头.结尾:小数:圆角字符 包含数字.字母.圆角字符 不以<br/>开头.结尾,但中间可以存在 小数中的小数点是半角 正则表达式 "^(?!<br/>)(([ ...

  7. JavaScript时间操作工具类

    /** * 时间操作工具类 * * @author zwq * */ var TimeFrameUtil = { /** * 格式化日期 * @param date {Date} 日期 * @para ...

  8. 并发编程 —— ScheduledThreadPoolExecutor

    1. 前言 在前面的文章中,我们介绍了定时任务类 Timer ,他是 JDK 1.3 中出现的,位于 java.util 包下.而今天说的 ScheduledThreadPoolExecutor的是在 ...

  9. C#中利用LightningChart绘制曲线图表

    最近在做一个“基于C#语言的电炉温控制软件设计”的设计,我在大学并不是专业学习C#语言编程的,对C#的学习研究完全是处于兴趣,所以编程技术也不是很厉害,遇到问题多参照网络上的开源码. 这不,在做这个课 ...

  10. IIS日志自动清理

    IIS在运行的过程中日志会不停地增长,若iis的网站被频繁的调用或不当的调用,则会产生很多日志.我在系统运维的时候曾出现过20G的系统盘,由于合作商开发的程序有问题,每几百微秒调用一次web服务,短期 ...