vs2015单元测试总结——3种方法可用

VS中有个非常有用的功能,单元测试。通过单元测试,开发人员和测试人员可以快速的检查C#,.net和c++项目中各个类的方法中是否有逻辑错误。单元测试仅仅需要创建一次,那么在每次更改源代码时候运行,以确保不引入bug。 
   
  对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里或C++里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。 
 

对于生成.exe文件的单元测试

经过多方面查找资料,以及询问同学,发现有三种单元测试的方法。下面一一介绍。 
   
  第一种方法: 
  首先创建在你需要测试的解决方案树上创建一个Unit Test Project。 
  如图所示: 
   
  如图所示,创建单元测试项目 
   
  这时会自动帮我们创建一个unittest1.cpp并生成部分初始代码 
   
  箭头指向的文件,就是需要写单元测试用例代码的地方。 
  
      例如我写的例子 
       
     然后可以使用下面的方法对这些单元测试进行运行 
     

那么将会运行你的所有测试用例。 
     如果运行成功的话,则会出现Test explore窗口。如下图 
     

请注意,此处比较关键如果没有设置相关项目,那么会出错的 错误截图如下 
      
   
  此时说明你没有配置单元测试的外部依赖项,如下图 
   
   
  此外还需要配置单元测试的关联 
 

选择要关联的单元测试 

完美

第二种方法: 
第二种方法和第一种方法所有的配置都一样,仅仅是单元测试的方式不同,并且单元测试代码的结构也不同。第一种方法创建的是Unit Test Project。而第二种方法,创建的是Managed Test Project,如下图所示。 

该单元测试的代码格式为 
    

其他配置和用法与第一种方法相同。请参考第一种方法。

两种方法都可以进行单元测试,但是他们是有差别的。 
        其实这两个工程都可用来进行单元测试,Managed Test Project提供了更全面的功能,如对类的开始初始化和结束销毁的处理,每个测试方法前后进行初始化和销毁处理等。而Unit Test Project相当于是对Managed Test Project的一种封装,只提供最简单、最常用的测试功能,而帮我们默认处理很多繁琐的工作。

第三种方法: 
使用Test Genertater NUnit Extension插件,这个插件使单元测试更加简化。该插件可在tools 扩展和更新里面下载。 
但是该插件有个很大的弊端,就是仅仅对于Visual Studio Enterprise版提供支持,其他的版本不支持。 
官方的使用方法说明 
一个较好的使用教程

附:常用的Assert用法 
1.3常用的Assert用法 
Assert.Inconclusive() 表示一个未验证的测试;

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

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

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

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

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

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

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

对于动态链接库的单元测试

上面的方法 只 能应用在生成.exe的项目,但是如果想测试动态库的情况就需要一些改动。 
其他的步骤基本相同,不同的是,在测试单元中不需要配置外部依赖项, 
只需要关联你将要测试的项目。 


要做的工作只是正确生成动态链接库 
这里大致介绍一下。 
一般为了保护自己代码,一般需要额外加一个接口,通过接口来访问你设计类的成员函数,相比原来的项目,多加了三个文件,如下图所示。 
 
这三个文件就是添加的接口,接口的实现,以及生成动态链接库的设置函数。这三个文件如下所示。 

常用的Assert用法
Assert.Inconclusive() 表示一个未验证的测试;
Assert.AreEqual() 测试指定的值是否相等,如果相等,则测试通过;
AreSame() 用于验证指定的两个对象变量是指向相同的对象,否则认为是错误
AreNotSame() 用于验证指定的两个对象变量是指向不同的对象,否则认为是错误
Assert.IsTrue() 测试指定的条件是否为True,如果为True,则测试通过;
Assert.IsFalse() 测试指定的条件是否为False,如果为False,则测试通过;
Assert.IsNull() 测试指定的对象是否为空引用,如果为空,则测试通过;
Assert.IsNotNull() 测试指定的对象是否为非空,如果不为空,则测试通过;
小提示
如果你本机安装了VS2010和一个更高版本的VS,这时你用VS2010编写单元测试并运行时就会发现所有的单元测试都是处于挂起的状态。网上很多人遇到了这种情况,所以个人建议使用更高版本的VS。
--------------------- 
作者:chr23899 
来源:CSDN 
原文:https://blog.csdn.net/chr23899/article/details/53035062 
版权声明:本文为博主原创文章,转载请附上博文链接!


此外还需要设置一个地方,如下图所示。 
否则会报错 
--------------------- 
作者:shilod 
来源:CSDN 
原文:https://blog.csdn.net/u013299585/article/details/73662526 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/Andrewniu/article/details/88549780