使用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()函数。代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace UnitTestDemo
{
class Program
{
static void Main(string[] args)
{
}
}
public class test
{
public test()
{ }
public int add(int a, int b)
{
return a + b;
}
}
}
3.在代码空白处右键,点击Unit Test Generator,默认选项确定。
之后界面如下图所示:
4.在testTest()函数里编写测试代码,代码如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnitTestDemo;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTestDemo.Tests
{
[TestClass()]
public class testTests
{
[TestMethod()]
public void testTest()
{
int a = , b = , expect = ;
test t = new test();
int real = t.add(a, b); Assert.AreEqual(real, expect);
//Assert.Fail();
}
}
}
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()函数。
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace UnitTestDemo
{
class Program
{
static void Main(string[] args)
{
} public static int Add(int num1, int num2)
{
return num1 + num2;
}
} }
4.在单元测试项目UnitTestDemoTest中引用控制台项目UnitTestDemo(在“引用”处右键“添加引用”),之后界面如下:
引用完毕后项目结构如下:
下面就是VS为UnitTest1类默认生成的方法。可以看到UnitTest1具有一个【TestClass】特性,表明这是一个测试类。TestMethod1具有一个【TestMethod】特性,表明这是一个测试方法。
一个方法必须具有【TestMethod】特性,且其所属的类具有【TestClass】特性,那么这个方法才会被VS承认为一个【单元测试方法】。
如果没有上面的两个特性中的一个,编译生成是没有任何问题的。但是VS不会把其作为一个【单元测试方法】。
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestDemoTest
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
}
}
}
5.截止目前,已经建立了一个可以执行的测试框架,虽然没有起到什么作用,但是测试已经可以执行了(直接点击测试资源管理器里面的全部运行即可)。测试结果如下图:
6.在单元测试的测试方法里面添加测试函数,代码如下:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using UnitTestDemo; namespace UnitTestDemoTest
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
int num1 = ;
int num2 = ; Assert.AreEqual(Program.Add(num1, num2), );
}
}
}
注意:一定要在函数里面引用需要测试的项目,我就是没有引用才引有错误(对于啥都不懂的我就允许我这不专业的说明吧)。这里引用之后,把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...
使用VS2013进行C#程序的单元测试的更多相关文章
- VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战(原创)
VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战 1.给指定项目安装Newtonsoft.Json ,Version 4.5.11 PM> Install-Package Ne ...
- 在Gogland里对GO程序进行单元测试!
单元测试在程序开发中具有很重要的作用! 1,可以保证程序代码的健壮,能够最小范围测试程序代码,从而保证程序的正确性! 2,可以通过单元测试代码快速了解当前的程序. 我在先前的几个软件公司工作时候,都对 ...
- VS2013软件的安装和单元测试
VS2013是什么? 微软在Builder 2013开发者大会上发布了Visual Studio 2013预览版,并且发布其程序组件库.NET 4.5.1的预览版.该软件已于北京时间2013年11月1 ...
- 如何让VS2013编写的程序
总体分c++程序和c#程序 1.c++程序 这个用C++编写的程序可以经过设置后在XP下运行,主要的“平台工具集”里修改就可以. 额外说明:(1)程序必须为Dotnet 4.0及以下版本.(XP只支持 ...
- 让用VS2012/VS2013编写的程序在XP中顺利运行
转自:http://blog.csdn.net/asanscape/article/details/38752655/ 微软为了推销自家平台,默认配置下VS2012和VS2013编写的应用程序只能在V ...
- 【转】VS2013 C#WinForm程序构造界面拖动控件NumericUpDown时"未响应“是有道词典惹的祸
很久之前遇到过因为金山词霸和其他软件冲突导致的程序无响应的情况. 没想到今天情况重现,VS2013在可视化编辑NumbericUpDown控件的时候,又出现了”未响应“,发现又是有道词典惹的祸. 可见 ...
- 使用VS2013调试FluorineFx程序
VS2013,建立 FluorineFx Web 项目方法: 先新建.项目.Web.选择.NET 3.5 ASP.NET 窗体程序来新建一个项目.复制 log.Templates.WEB-INF 文件 ...
- VS2013 OpenGL 开发程序时: error LNK2019: 无法解析的外部符号 __imp____glutInitWithExit@12,error LNK2019: 无法解析的外部符号 __imp____glutCreateWindowWithExit@8
环境:Windows 下 OpenGL ,Used in VS2013 前言:刚接触 OpenGL 的人,第一件事当然就是配置环境,说起配置环境 OpenGL 和 DirectX 相差不多,同时也基本 ...
- VS2013 添加控制台程序
一.打开vs2013
随机推荐
- ArcGIS API for Javascript之专题图的制作(四)热力图渲染(上)
一 .热力图定义 热力图(heat map)也称热图,是以特殊颜色高亮区域的形式表示密度.温度.气压.频率等分布的不易理解和表达的数据. 二.HeatmapRenderer esri/renderer ...
- BZOJ4269:再见Xor(线性基)
Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. Input 第一行一个正整数N. 接下来一行N个非负整数. ...
- 理解RHEL上安装oracle的配置参数 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login
无论安装什么版本的Oracle,在安装之前,都需要配置 /etc/pam.d/login /etc/profile /etc/security/limits.conf这三个文件 那这三个文件究 ...
- nano,pico文本编辑器,debian执行crontab -e
debian执行crontab -e的时候出现: Edit this file to introduce tasks to be run by cron.## Each task to run has ...
- C++之new和delete操作符
在C语言中的动态分配和释放内存的函数是malloc calloc 和 free , 而在C++中要用 new new[] delete delete[] 来申请动态空间和释放空间. 注意:的是new. ...
- Android SurfaceView概述
简介:SurfaceView继承自View,但它与View不同,View是在UI主线程中更新画面,而SurfaceView是在一个新线程中更新画面,View的特性决定了其不适合做动画,因为如果更新画面 ...
- 20155302 Exp2 后门原理与实践
20155302<网络对抗>后门原理与实践 实验要求 1.使用netcat获取主机操作Shell,cron启动 (0.5分) 2.使用socat获取主机操作Shell, 任务计划启动 (0 ...
- vue-cli 动态绑定图片失败
1.template 中引用图片,第一个为固定路径,第二个为动态绑定路径 eg: <img src="XXXXXX.png" alt=""> < ...
- python3获取主机名、主机IP
python3可以通过socket模块获取主机名及主机IP 代码如下: *********************************************************** 学习永远 ...
- Mybatis使用generator自动生成的Example类使用OR条件查询
参考:https://blog.csdn.net/qq_36614559/article/details/80354511 public List<AssetsDevicetypeRefacto ...