使用VS2013进行C#程序的单元测试(转)

没有按照预期的那样做出成功的单元测试,磕磕绊绊参照了下面两篇博客大致做出来了,所以很有必要记录一下过程。

http://www.cnblogs.com/duasonir/p/5299732.html(照着这个我成功的做出了单元测试)

http://www.cnblogs.com/Look_Sun/p/4514732.html(这个我几乎研究了一天,但是最后还是没有做出来,最后看到上面那位同学的参考的内容和这篇一样,拜读之后也作出了半成品)

由于程序都是简单加法,而且我自己的思想并没有加入其中,项目名以及有些类名就不做改变了,一些术语不够精确还望指正。

一、C#控制台程序的单元测试(使用“Unit Test Generator”插件生成单元测试和方法)

“Unit Test Generator”可以通过VS菜单栏:工具->扩展和更新-->搜索““Unit Test Generator””取得,我的已经下载好了,没有提示下载,安装完成后后需要重启VS。

安装好之后就可以进行单元测试了,这个单元测试主要参照前者的博客成功做出单元测试。

1.打开vs2013:文件->新建->项目(单击),然后看到如下界面

点击确定后如下图:

2.编写代码,生成一个新的类,编写构造函数 与 add()函数。代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace UnitTestDemo
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13         }
14     }
15     public class test
16     {
17         public test()
18         {
19
20         }
21         public int add(int a, int b)
22         {
23             return a + b;
24         }
25     }
26 }

3.在代码空白处右键,点击Unit Test Generator,默认选项确定。

之后界面如下图所示:

4.在testTest()函数里编写测试代码,代码如下。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using UnitTestDemo;
 7 using Microsoft.VisualStudio.TestTools.UnitTesting;
 8 namespace UnitTestDemo.Tests
 9 {
10     [TestClass()]
11     public class testTests
12     {
13         [TestMethod()]
14         public void testTest()
15         {
16             int a = 1, b = 2, expect = 3;
17             test t = new test();
18             int real = t.add(a, b);
19
20             Assert.AreEqual(real, expect);
21             //Assert.Fail();
22         }
23     }
24 }

5.在代码空白处右键,点击 运行测试(T),运行结果将自动弹出,如下图所示:

打开测试资源管理器:依次点击VS2013的菜单栏:测试-> 窗口->测试资源管理器。

如果给出的期望值错误的话,测试就不会通过,如下图:

下面给出一张测试不通过,并且给出实际值与期望值分别是多少的图片。来源:http://www.cnblogs.com/libaoquan/p/5296384.html

以上为最成功的一次的单元测试,除了测试错误的时候没有提示实际值与期望值。(我尽力了)

二、C#控制台程序的单元测试(手动编写单元测试类和方法)

主要参照博客:http://www.cnblogs.com/Look_Sun/p/4514732.html

1.同上面的  一.1;

2.在解决方案处右键->添加->新建项目。

新增一个单元测试项目。取名为UnitTestDemoTest。如下图:

3.进入控制台项目UnitTestDemo的Program类,创建一个Add方法(目的就是测试这个Add方法运行是否正常,返回结果是否正确)。这里把Add方法写到写到Program类里面了,上面的那个单元测试是生成一个新的类test,编写构造函数 与 add()函数。

代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace UnitTestDemo
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13         }
14
15         public static int Add(int num1, int num2)
16         {
17             return num1 + num2;
18         }
19     }
20
21 }

4.在单元测试项目UnitTestDemoTest中引用控制台项目UnitTestDemo(在“引用”处右键“添加引用”),之后界面如下:

引用完毕后项目结构如下:

下面就是VS为UnitTest1类默认生成的方法。可以看到UnitTest1具有一个【TestClass】特性,表明这是一个测试类。TestMethod1具有一个【TestMethod】特性,表明这是一个测试方法。

一个方法必须具有【TestMethod】特性,且其所属的类具有【TestClass】特性,那么这个方法才会被VS承认为一个【单元测试方法】。

如果没有上面的两个特性中的一个,编译生成是没有任何问题的。但是VS不会把其作为一个【单元测试方法】。

 1 using System;
 2 using Microsoft.VisualStudio.TestTools.UnitTesting;
 3
 4 namespace UnitTestDemoTest
 5 {
 6     [TestClass]
 7     public class UnitTest1
 8     {
 9         [TestMethod]
10         public void TestMethod1()
11         {
12         }
13     }
14 }

5.截止目前,已经建立了一个可以执行的测试框架,虽然没有起到什么作用,但是测试已经可以执行了(直接点击测试资源管理器里面的全部运行即可)。测试结果如下图:

6.在单元测试的测试方法里面添加测试函数,代码如下:

 1 using System;
 2 using Microsoft.VisualStudio.TestTools.UnitTesting;
 3 using UnitTestDemo;
 4
 5 namespace UnitTestDemoTest
 6 {
 7     [TestClass]
 8     public class UnitTest1
 9     {
10         [TestMethod]
11         public void TestMethod1()
12         {
13             int num1 = 100;
14             int num2 = 200;
15
16             Assert.AreEqual(Program.Add(num1, num2), 300);
17         }
18     }
19 }

注意:一定要在函数里面引用需要测试的项目,我就是没有引用才引有错误(对于啥都不懂的我就允许我这不专业的说明吧)。这里引用之后,把Program类的可见性改为internal或者public。

只在资源管理器里面引用里面添加引用的话会出现下面的错误(我就是被下面的错误整蒙了,没点基础真苦逼,连添加头文件都不造- -!):

7.代码测试如下图(测试通过和不通过的界面):

测试不通过时也没有提示期望值和实际值。o(╯□╰)o

三、其实课上吴小勇同学给我们演示了C++的单元测试。

http://www.cnblogs.com/xiaoyongwu/p/5289964.html

一开始我照着吴小勇同学的博客,准备写一个C++的单元测试。一直出现错误后就写了C#的单元测试。

主要是手忙脚乱之际,度娘让我看到希望了,感觉很详细,就参考着进行单元测试了。

http://www.cnblogs.com/Look_Sun/p/4514732.html

后来一直出错,请教了班级助教后已经能测试通过了但还是不知道问题出在哪里,迷茫的时候又发现下面这篇博客,最后才顺利写出这个半成品单元测试。

http://www.cnblogs.com/duasonir/p/5299732.html

后期再添加一个C++的单元测试。ing...

原文地址:https://www.cnblogs.com/lanhaipeng/p/8168027.html

时间: 2024-11-06 13:53:18

使用VS2013进行C#程序的单元测试(转)的相关文章

vs2013编译的程序在其他机器上运行的环境设置

vs2013编译的程序在其他没有安装vs2013的机器上运行会有问题,网上有很多解决方法,如果你还没有解决,可以尝试以下方法,这是我在反复崩溃,烦躁测试后得到的解决方法. 1. 安装vs2013 运行包 vcredist_x64.exe 如果这个时候还是不能正常执行,请不要和我一样崩溃, 试试我的解决方法,对这个运行包进行修复 控制面板--程序--程序和功能 在程序列表里找到 vc++ 12.0.30501 选中,修复 这样就可以打开vs2013编译出来的程序了,我碰到的情况是这样解决的. ==

【Visual Studio】让用VS2012/VS2013编写的程序在XP中顺利运行(转)

原文转自 http://blog.csdn.net/asanscape/article/details/38752655 微软为了推销自家平台,默认配置下VS2012和VS2013编写的应用程序只能在Vista/Win7/Win8上运行.但幸好还保留了生成XP程序的设置项.XP和Win2003的用户还是大量存在的,我们程序软件的发布不能不考虑他们. 1. 项目菜单->项目属性->配置属性->常规->平台工具集,选择"VS2013WindowsXP(v120_xp)&quo

让用VS2012/VS2013编写的程序在XP中顺利执行

微软为了推销自家平台,默认配置下VS2012和VS2013编写的应用程序仅仅能在Vista/Win7/Win8上执行.但幸好还保留了生成XP程序的设置项.XP和Win2003的用户还是大量存在的,我们程序软件的公布不能不考虑他们. 1. 项目菜单->项目属性->配置属性->常规->平台工具集,选择"VS2013WindowsXP(v120_xp)"; 2. 项目菜单->项目属性->配置属性->常规->MFC的使用.选择在静态库中使用MFC

iOS开发 简述使用OCUnit对程序进行单元测试(UnitTest)

所谓单元测试(又称为模块测试, Unit Testing)就是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作. 其实在我们开发的程序实现某个功能的时候我们也有进行测试.只不过,你是在项目代码中直接写的方法,而且在测试的时候,也是点点点,点到相应的界面才触发相应的方法,进行测试,这测试效率,想想也是醉了,不过还好能正常测试,但是如果你想控制不同的输入参数呢?好,你说直接写入到程序.但是,你测试完成了之后呢?好,你说那就注释掉啊.但是,如果后面你改动了又需要再测试一此呢?其实,说了这么

iOS开发 使用OCUnit对程序进行单元测试(UnitTest)

所谓单元测试(又称为模块测试, Unit Testing)就是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作. 其实在我们开发的程序实现某个功能的时候我们也有进行测试.只不过,你是在项目代码中直接写的方法,而且在测试的时候,也是点点点,点到相应的界面才触发相应的方法,进行测试,这测试效率,想想也是醉了,不过还好能正常测试,但是如果你想控制不同的输入参数呢?好,你说直接写入到程序.但是,你测试完成了之后呢?好,你说那就注释掉啊.但是,如果后面你改动了又需要再测试一此呢?其实,说了这么

使用VS2013调试FluorineFx程序

VS2013,建立 FluorineFx Web 项目方法: 先新建.项目.Web.选择.NET 3.5 ASP.NET 窗体程序来新建一个项目.复制 log.Templates.WEB-INF 文件夹过来,添加 Gateway.aspx 文件,添加引用 antlr.runtime.dll.FluorineFx.dll.FluorineFx.ServiceBrowser.dll.ICSharpCode.SharpZipLib.dll.log4net.dll 修改IISExpress设置:C:\U

VS2013 添加控制台程序

一.打开vs2013 二.新建控制台应用程序 打开VS2013 后 ,新建项目 windows 桌面 控制台应用程序 项目名称.解决方案名称 确定 创建成功

让用VS2012/VS2013编写的程序在XP中顺利运行

转自:http://blog.csdn.net/asanscape/article/details/38752655/ 微软为了推销自家平台,默认配置下VS2012和VS2013编写的应用程序只能在Vista/Win7/Win8上运行.但幸好还保留了生成XP程序的设置项.XP和Win2003的用户还是大量存在的,我们程序软件的发布不能不考虑他们. 1. 项目菜单->项目属性->配置属性->常规->平台工具集,选择“VS2013WindowsXP(v120_xp)”; 2. 项目菜单

复利程序更新-单元测试

在写单元测试前,首先进行复利程序代码的在结构上的修改,将显示与计算分隔开,目的是为了便于传入参数进行测试,并且重命名类的名字方便理解. 1 package ch1; 2 3 import java.util.InputMismatchException; 4 import java.util.Scanner; 5 6 public class Calculate { 7 static double capital=0; 8 static double rate=0; 9 static doubl