四、附加测试属性

  附加测试属性,在默认生成的测试代码是使被注释掉的,取消注释就可以使用。

  例如,要在执行测试前,输出测试开始时间,在执行测试后,输出测试结束时间。代码如下:

[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext)
{
string begin = String.Format("测试开始时间:{0}", DateTime.Now.ToString());
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"F:\1.txt", true))
{
sw.WriteLine(begin);
sw.Flush();
sw.Close();
}
}
[TestCleanup()]
public void MyTestCleanup()
{
string end = String.Format("测试结束时间:{0}", DateTime.Now.ToString());
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"F:\1.txt", true))
{
sw.WriteLine(end);
sw.Flush();
sw.Close();
}
}

五、数据驱动的单元测试

  数据驱动的单元测试是指单元测试的输入数据遍历一个数据源的所有行,从数据源的每一行读入数据并传入给测试方法使用。

1、Access数据驱动的单元测试

  (1)在测试视图中右键单击需要配置成数据驱动方式的单元测试方法,点击“属性”。

  (2)在“属性”窗口中,单击“数据连接字符串”属性项的“...”,打开“选择数据源”对话框。

  (3)在“选择数据源”窗口中,选择“数据库”,点击“下一步”。

  (4)点击“新建连接”,弹出“选择数据源”窗体,选择“Microsoft Access 数据库文件”后,点击“继续”。

  (5)在“连接属性”界面中,点击“浏览”,选择要连接的Access数据库,点击“确定”。

  (6)在“新建测试数据源向导中点击“下一步”,选择数据源中的数据表,点击“完成”,在自动生成的测试代码中增加了数据源信息。

  (7)可通过修改测试方法属性中的“数据访问方法”为顺序的或随机,以配置数据访问方法。

  (8)编写测试代码使用数据源。

  通过TestContext类的DataRow和DataConnection属性将数据提供给正在运行的单元测试。

/// <summary>
///Add 的测试
///</summary>
[DataSource("System.Data.OleDb", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Administrator\\Desktop\\Test\\Database1.accdb", "test", DataAccessMethod.Sequential), TestMethod()]
public void AddTest()
{
TestClass target = new TestClass();
int a = int.Parse(TestContext.DataRow["a"].ToString());
int b = int.Parse(TestContext.DataRow["b"].ToString());
int expected = int.Parse(TestContext.DataRow["Result"].ToString());
int actual;
actual = target.Add(a, b);
Assert.AreEqual(expected, actual);
//Assert.Inconclusive("验证此测试方法的正确性。");
}

  Access数据源中的表为:

2、Excel数据驱动的单元测试

  (1)修改“数据连接字符串”的数据源,在“连接属性”窗体中,点击“更改”,在“更改数据源”界面中修改数据源为“Microsoft ODBC 数据源”,点击“确定”。

  (2)在“连接属性”界面中,选择“使用连接字符串”,点击“生成”。

  (3)在“连接数据源”界面中,点击“新建”。

  (4)在“创建新数据源”界面中,选择“Microsoft Excel Driver(*.xls)”,点击“下一步”。

  (5)设置文件数据源的保存名称,点击“下一步”,直到“完成”。

  (6)在“ODBC Microsoft Excel 安装”界面中,点击“选择工作簿”。

  (7)在“选择工作簿”界面中,选择作为数据源的Excel文件,点击“确定”,直至回到“新建测试数据源向导”。

  (8)点击“下一步”,选择Sheet表单,点击“完成”。

  (9)编写测试代码使用数据源:

/// <summary>
///Add 的测试
///</summary>
[DataSource("System.Data.Odbc", "Driver={Microsoft Excel Driver (*.xls)};dbq=C:\\Users\\Administrator\\Desktop\\Test\\test.xls;defaultdir=C:\\Users\\Administrator\\Desktop\\Test;driverid=790;fil=excel 8.0;filedsn=D:\\我的资料库\\Documents\\data.dsn;maxbuffersize=2048;maxscanrows=8;pagetimeout=5;readonly=1;safetransactions=0;threads=3;uid=admin;usercommitsync=Yes", "Sheet1$", DataAccessMethod.Sequential), TestMethod()]
public void AddTest()
{
TestClass target = new TestClass();
int a = int.Parse(TestContext.DataRow.ItemArray[0].ToString());
int b = int.Parse(TestContext.DataRow.ItemArray[1].ToString());
int expected = int.Parse(TestContext.DataRow.ItemArray[2].ToString());
int actual;
actual = target.Add(a, b);
Assert.AreEqual(expected, actual);
//Assert.Inconclusive("验证此测试方法的正确性。");
}

六、常用断言方法

1、Assert类:用于断言

    Assert.Inconclusive()                    表示一个未验证的测试;

    Assert.AreEqual()                         测试指定的值是否相等,如果相等,则测试通过;

    AreSame()                                  用于验证指定的两个对象变量是指向相同的对象,否则认为是错误;

    AreNotSame()                             用于验证指定的两个对象变量是指向不同的对象,否则认为是错误;

    Assert.IsTrue()                           测试指定的条件是否为True,如果为True,则测试通过;

    Assert.IsFalse()                          测试指定的条件是否为False,如果为False,则测试通过;

    Assert.IsNull()                            测试指定的对象是否为空引用,如果为空,则测试通过;

    Assert.IsNotNull()                       测试指定的对象是否为非空,如果不为空,则测试通过;

    Assert.IsInstanceOfType              验证指定对象是否为指定类型的实例,如果是,则测试通过;

    Assert.IsNotInstanceOfType         验证指定对象是否不为指定类型的实例,如果是,则测试通过;

    Assert.Fail()                               在不检查任何条件的情况下使断言失败;

    Assert.ReplaceNullChars()            在字符串中,用"\\0"替换空字符('\0');

  更加详细的说明可参照:http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/microsoft.visualstudio.testtools.unittesting.assert(v=vs.100).aspx

2、CollectionAssert类:用于验证对象集合是否满足条件

    CollectionAssert.AllItemsAreInstancesOfType()       验证指定集合中的所有元素是否为指定类型的实例。

    CollectionAssert.AllItemsAreNotNull()                    验证指定集合中的所有项是否都不为 null。

CollectionAssert.AllItemsAreUnique()                    验证指定集合中的所有项是否都唯一。 如果集合中有两个元素相等,则断言失败。

CollectionAssert.AreEqual()                                 验证两个指定的集合是否相等。 如果这两个集合不相等,则断言失败。

CollectionAssert.AreEquivalent()                          验证两个指定的集合是否等效。

CollectionAssert.AreNotEqual()                            验证两个指定的集合是否不相等。

CollectionAssert.AreNotEquivalent()                     验证两个指定的集合是否不等效。

CollectionAssert.Contains()                                 验证指定的集合是否包含指定的元素。

CollectionAssert.DoesNotContain()                       验证指定的集合是否不包含指定的元素。

CollectionAssert.IsNotSubsetOf()                         验证第一个集合是否不是第二个集合的子集。

CollectionAssert.IsSubsetOf()                              验证第一个集合是否为第二个集合的子集。

  更加详细的说明可参照:http://msdn.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.unittesting.collectionassert.aspx

3、StringAssert类:用于比较字符串。

StringAssert.Contains                         验证第一个字符串是否包含第二个字符串。

StringAssert.Matches                          验证指定的字符串是否与正则表达式匹配。

StringAssert.DoesNotMatch                 验证指定的字符串是否与正则表达式不匹配。

StringAssert.StartWith                        验证第一个字符串是否以第二个字符串开头。

StringAssert.EndsWith                        验证第一个字符串是否以第二个字符串结尾。

  更加详细的说明可参照:http://msdn.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.unittesting.stringassert.aspx

VS2010的单元测试(二)的更多相关文章

  1. Intellij Idea系列之导Jar包与编写单元测试(二)

     Intellij Idea系列之导Jar包与编写单元测试(二) 一.初衷 对于很多的初学者来说,Intellij如何导入jar包感到很迷惑,甚至在网上搜过相关文章之后还是云里雾里,本博客通过图文并茂 ...

  2. RIGHT-BICEP单元测试——“二柱子四则运算升级版”

    RIGHT-BICEP单元测试 ——“二柱子四则运算升级版” ”单元测试“这对于我们来说是一个全新的专业含义,在上了软件工程这门课,并当堂编写了简单的"求一组数中的最大值"函数的单 ...

  3. VS2010的单元测试(一)

    在VS2010中,单元测试的功能很强大,使得建立单元测试和编写单元测试代码,以及管理和运行单元测试都变得简单起来,通过私有访问器可以对私有方法也能进行单元测试,并且支持数据驱动的单元测试. 一.创建单 ...

  4. Django单元测试二三事

    零.前言 之前做过一个微信公众平台的开发者后台,功能比较简单,我个人也比较懒,所以就没有写测试.前段时间更新了一下版本,对代码进行了改动.结果昨天收到消息说后台出问题了,一个功能无法使用.我检查了半天 ...

  5. Django单元测试(二)------测试工具

    The test client test client是一个python类,来模拟一个简单的“哑”浏览器,允许你来测试你的view函数.你可以使用test client完成下列事情: 1.模拟&quo ...

  6. VS2010/MFC对话框二:为对话框添加控件)

    为对话框添加控件 创建对话框资源需要创建对话框模板.修改对话框属性.为对话框添加各种控件等步骤,前面一讲中已经讲了创建对话框模板和修改对话框属性,本节继续讲如何为对话框添加控件. 上一讲中创建了一个名 ...

  7. VS2010 单元测试,性能测试 案例

    http://www.cnblogs.com/heqichang/category/315226.html

  8. 使用VS2015(c#)进行单元测试,显示测试结果与查看代码覆盖率

    创建测试的过程可参考如下链接 http://www.cnblogs.com/libaoquan/p/5296384.html (一)如何使用VS2015查看测试结果 问题描述:使用VS2010执行单元 ...

  9. 20175209 实验二《Java面向对象程序设计》实验报告

    20175209 实验二<Java面向对象程序设计>实验报告 一.实验前期准备 了解三种代码 伪代码 产品代码 测试代码 我们先写伪代码,伪代码 从意图层面来解决问题: 有了伪代码 我们用 ...

随机推荐

  1. GitLab-CI/CD入门实操

    以Spring boot项目为例.传统方式是本地生成jar包,FTP上传服务器,重启服务:如果是内网测试服,也可以在服务器上安装git,在服务器上编译打包.但这都需要人为干预,于是CI/CD就出现了. ...

  2. 实现所有SAP设备打印机并行打印

    SAP版本:ECC 6.0 701 1.如何实现所有SAP设备打印机并行打印? I.通过事务码:SPAD,进入假脱机管理初始屏幕.点击左上角的菜单中 配置(c)=>输出设备,进入SAP系统 输出 ...

  3. 第2章_神经网络入门_2-5&2-6 数据处理与模型图构建

    目录 神经元的TF实现 安装 神经网络的TF实现 神经元的TF实现 安装 版本: Python 2.7 tf 1.8.0 Linux 略 demo 神经网络的TF实现 # py36 tf 2.1. # ...

  4. linux编译模块,包含了头文件却还是报undifind警告

    在编写一个自己写的gadget驱动的时候遇到一个这样的问题,编译的时候报了个警告:WARNING: "usb_composite_register" [-/my_zero.ko] ...

  5. C# socket 阻止模式与非阻止模式应用实例

    问题概述 最近在处理一些TCP客户端的项目,服务端是C语言开发的socket. 实际项目开始的时候使用默认的阻塞模式并未发现异常.代码如下 1 public class SocketService 2 ...

  6. mybatis框架整合及逆向工程

    mybatis框架整合及逆向工程 一.三大框架整合 ​ 整合SSM框架 1.导入pom文件 1.导入spring的pom依赖 <?xml version="1.0" enco ...

  7. 设置一个两边固定中间自适应的css

    1.两边浮动,中间自动宽度 给左右两个盒子设置左右浮动,中间的盒子不设置宽度,左右两边边距为左右盒子的宽度,中间盒子的位置必须写在右盒子下面,不然会把右盒子挤下去 如:   <div class ...

  8. Git恢复之前版本的两种方法reset、revert

    实战 回退 1.删除之前的提交 git reset --hard id 推送到远程 git push -f [git log中确实删除了,但是拿到可以恢复] 2.不删除之前的提交 git revert ...

  9. Core3.1 微信v3 JSAPI支付 退款

    1.前言 上一篇写了<Core3.1 微信v3 JSAPI支付>,这个属于v3的接口规则,现在研究了下退款的接口我写的时候它属于v2接口规则文档.但凡微信支付文档里面写清楚点我也不会在这里 ...

  10. python join()方法的使用,可以应用到tcp压测发送指定数据长度的应用

    Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串.其中,序列中的元素应是字符串类型. 学习join()方法主要是为了配合随机数的使用,生产某个指定位数的随机数,在t ...