[单元测试]VS-通过代码添加单元测试提示No classes or namespaces in this assembly

  在Visual Studio 2012中,打算给以下方法添加单元测试,但却出现了提示:No classes or namespaces in this assembly的提示。

 1 namespace UnitTest
 2 {
 3      class Program
 4     {
 5         public int Add(int a, int b)
 6         {
 7             return a + b;
 8         }
 9         public int Divide(int a, int b)
10         {
11             return a / b;
12         }
13         static void Main(string[] args)
14         {
15         }
16     }
17 }

  原因还是在于对Program这个类的访问权限,默认是internal类型。这时候只能在程序集内访问该类。而创建新的测试项目已经是属于另外一个程序集了,这时候测试项目当然无法查看到待测试项目中的类。因此,需要在需要测试的类前加上public访问修饰符。

  又一次被默认访问修饰符耍了,心粗哎。

  这里介绍下通过添加单元测试项目完成单元测试的方法,以加深理解。单元测试,浅显的理解就是写一个测试类,在这个测试类中输入测试参数,预期结果。然后在测试类的方法中运行待测试类的方法,看运行结果是否符合预期结果。用户需要输入一系列的测试样例,来完成全面地测试。

  一.首先在解决方案中再新建一个单元测试项目,如下图所示,将其命名为UnitTestProject1。

  

  二.新建的方案界面如下,注意[TestClass]和[TestMethod]特性,表明这是测试类。还有程序自动添加了Microsoft.VisualStudio.TestTools.UnitTesting命名空间。

   因为我们是要在这个单元测试项目中测试处在UnitTest集合中的项目。因此首先需要添加对这个待测试项目的引用。整个程序界面如下:

  

  三.这时候就是开始编写测试代码的时候了。我们需要在TestMethod()中为我们要验证的方法编写测试程序。单元测试的基本方法是调用被测代码的函数,输入函数的参数值,获取返回结果,然后与预期测试结果进行比较,如果相等则认为测试通过,否则认为测试不通过。在VS里做的单元测试时基于断言的测试。完成这个判断操作的就是断言类,它会比较测试结果和预期结果,然后在运行测试语句时,输出测试结果。整个过程跟平时调用一个类的方法一样。

 1     [TestClass]
 2     public class UnitTest1
 3     {
 4         [TestMethod]
 5         public void TestMethod1()
 6         {
 7             UnitTest.Program method2test = new Program();
 8             int a = 1; //TODO:根据要求初始化输入参数之一
 9             int b = 3;//TODO:根据要求初始化输入参数之二
10             int expect = 4;//TODO:根据要求初始化正确的结果
11             int actual;//用来存储运行后的结果
12             actual = method2test.Add(a, b);
13             //开始比较结果,基于Assert断言
14             Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(expect, actual);
15         }
16     }

  

  常见断言类:Assert、CollectionAssert、StringAssert

  四.运行单元测试。打开Test Explorer。生成所有测试项目,再单击Test Explorer中的Run。结果如下:

  五.用户可以在Test Exporer中查看运行测试的结果。即可知道待测试的代码是否通过测试。并可在测试结果上右键,查看代码覆盖率:

  

  

  关于代码覆盖率的文章可以查看:http://www.cnblogs.com/coderzh/archive/2009/03/29/1424344.html

时间: 2024-08-17 17:47:33

[单元测试]VS-通过代码添加单元测试提示No classes or namespaces in this assembly的相关文章

MFC List Control控件添加单元格编辑和单元格下拉列表项以适用于数据库相关操作

作为现代的软件,往往是连着数据库的,而连着和用户方便地操作之间,还有着界面这道坎.MFC是Windows上比较好开发用户界面的框架,然而其自带的控件中没有对于数据库表格支持较好的控件,而使用网上提到的 DataGrid 等控件在本人的win8.1+VS2013平台上老出现找不到控件或者头文件的问题,搞的烦死人.最后想到 List Control 控件只要稍作修改,加上单元格编辑和单元格下拉列表,其实就能和数据库进行良好的对接,一百度,果然有人已经做了这件事,实在是太让人感动了!       

css代码添加背景图片常用代码

css代码添加背景图片常用代码 1 背景颜色 { font-size: 16px; content: ""; display: block; width: 700px; height: 0px; margin: 20px 0px;"> 2 背景图片 {background-image: url(url)|none} 3 背景重复 {background-repeat:inherit|no-repeat|repeat|repeat-x|repeat-y} 4 背景固定 {

代码添加一个按钮及监听方法

有时候无法从控件中拖拽一个按钮到storyboard,必须用编写代码方式添加按钮: 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 // Do any additional setup after loading the view, typically from a nib. 5 //计算出展示表情区域的宽和 展示区距顶部的高度+10个偏移量 6 //添加按钮 9 //创建button 10 addBtn = [[UIButton alloc

iOS -- 用代码添加按钮

#import "ViewController.h" @interface ViewController () @end @implementation ViewController #pragma mark 用代码添加按钮 // 系统默认程序开始时就加载此方法 - (void)viewDidLoad{ [super viewDidLoad]; // 1.创建按钮 UIButton *button = [[UIButton alloc] init]; // 2.添加按钮 [self.v

IOS Ui控件 修改位置和尺寸,代码添加控件

所有的UI控件最终都继承自UIView,UI控件的公共属性都定义在UIView中, UIView的常见属性 UIView *superview; 获得自己的父控件对象 NSArray *subviews; 获得自己的所有子控件对象 NSInteger tag; 控件的ID(标识),父控件可以通过tag来找到对应的子控件 CGAffineTransform transform; 控件的形变属性(可以设置旋转角度.比例缩放.平移等属性) CGRect frame; 控件所在矩形框在父控件中的位置和尺

Qt在mainwindow下代码添加控件不能显示的问题

以前在dialog或者widget下代码添加控件能显示,但是今天发现在mainwindow下居然不能显示,后来查了资料才知道,需要先定义一个widget,具体代码如下:    QWidget *center = new QWidget(this);    setCentralWidget(center);     penColorComboBox = new QComboBox;     createColorComboBox(penColorComboBox);     penColorLab

Android 纯代码添加点击效果

项目中很多的Button, 同时配置很多按钮切图,Selector是不是很烦, 使用下面这个类,就可以直接为Button增加点击效果. 不用多个图片,不用Selector. 用法:Button.setOnTouchListener(Effect_Click.getInstance()); 效果图:    源码: class Effect_Click implements OnTouchListener { private static Effect_Click Effect_Click; pub

给php代码添加规范的注释phpDocumentor

给php代码添加规范的注释更多参考 http://phpdoc.org/docs/latest/index.html在phpdocumentor中,注释分为文档性注释和非文档性注释.所谓文档性注释,是那些放在特定关键字前面的多行注释,特定关键字是指能够被phpdoc分析的关键字,例如class,var等,具体的可参加附录1.那些没有在关键字前面或者不规范的注释就称作非文档性注释,这些注释将不会被phpdoc所分析,也不会出现在你产生的api文当中.3.2如何书写文档性注释:所 有的文档性注释都是

Google Analytics谷歌分析教程:代码添加

一般用户注册添加过程 如果您是第一次知道Google Analytics(分析),并想把Google Analytics(分析)添加到您的网站上,那么您只需要以下几步 第一步:创建 Google Analytics(分析)帐户 要创建 Google Analytics(分析)帐户,请按以下步骤操作: 1.访问 http://www.google.cn/analytics/zh-CN/. 2.输入您 Google 帐户的电子邮件和密码,然后点击登录.如果没有 Google 帐户,请点击立即注册创建