私有方法需不需要测试,本文不做讨论。假设您也认为有时候,私有方法也需要进行测试,那就一起来看看如何进行私有方法的测试。

  • 准备测试代码

测试用的代码还是前面测试时使用过的代码,不同之处就是在类中增加了一个私有方法。

        private static int Div( int a, int b)
{
return a / b;
}
  • 创建测试方法

测试方法的创建步骤也与一般的测试方法一样,在带测试的方法上从右键菜单中选择“创建单元测试”就可以在测试项目中添加一个结构完整的测试私有方法的单元测试方法,我们所需要做的就是修改测试条件以及断言等。

        /// <summary>
///A test for Div
///</summary>
[ TestMethod()]
[ DeploymentItem("ConsoleApplication1.exe" )]
public void DivTest()
{
int a = ; // TODO: Initialize to an appropriate value
int b = ; // TODO: Initialize to an appropriate value
int expected = ; // TODO: Initialize to an appropriate value
int actual;
actual = Mathmatics_Accessor .Div(a, b);
Assert.AreEqual(expected, actual);
Assert.Inconclusive( "Verify the correctness of this test method." );
}
上面是我们创建的测试方法,现在我们就来分析一下这段代码。
首先是DeploymentItem特性,MSDN的解释是:指定应具有在运行测试之前的程序集一起部署的文件或目录。 附加此属性设置为测试选件类或测试方法。 可以使用多个实例。
然后是Mathmatics_Accessor ,从命名上就可以看出,这是Mathmatics的一个访问器,可以让我们忽略私有方法的访问控制。其它就与我们前面提到的单元测试没什么区别了。
  • 在Visual Studio 2012中测试私有方法

在Visual Studio 2010中可以按照上面的方法来进行测试,但是在Visual Studio 2012中却不再支持直接测试私有方法了,据说是因为微软认为这不是最佳的实践。所以,我们只好自己想办法来实现了。一种奇葩一点儿的方法,直接把private换成public,然后再来测试,嘿嘿。正常一点儿,使用反射来实现在测试方法中对私有方法的调用。

 

        /// <summary>
///A test for Div
///</summary>
[ TestMethod()]
public void DivTest2()
{
int a = ; // TODO: Initialize to an appropriate value
int b = ; // TODO: Initialize to an appropriate value
int expected = ; // TODO: Initialize to an appropriate value
int actual = a / b;
Type t = typeof(ConsoleApplication1 .Mathmatics);
MethodInfo method = t.GetMethod( "Div", BindingFlags .NonPublic | BindingFlags. Static);
object[] oa = { a, b };
actual = Convert .ToInt32(method. Invoke(t, oa));
Assert.AreEqual(expected, actual);
//Assert.Inconclusive("Verify the correctness of this test method.");
}
这里所使用的反射的代码也非常简单,就不再做解释了。
 
关于如何对私有方法进行单元测试,就写到这里了。后面还将继续介绍一下Visual Studio测试工具的其他内容。

使用VisualStudio进行单元测试之三的更多相关文章

  1. Visual Studio 单元测试之三---压力测试

    原文:Visual Studio 单元测试之三---压力测试 我们都知道大名鼎鼎的LoadRuner,但是很少有人知道Visual Studio自带的Test也可以做些简单的压力测试,下面我们就介绍一 ...

  2. Android单元测试之三:使用模拟框架模拟依赖

    Android单元测试之三:使用模拟框架模拟依赖 基本描述 如果是一些工具类方法的测试,如计算两数之和的方法,本地 JVM 虚拟机就能提供足够的运行环境,但如果要测试的单元依赖了 Android 框架 ...

  3. 使用VisualStudio进行单元测试之一

    使用VisualStudio中的单元测试功能,可以很方便的创建单元测试项目.编写单元测试代码以及执行单元测试.而如何在VisualStudio中使用单元测试功能,就是本文和后面几篇想要说的了.    ...

  4. 使用VisualStudio进行单元测试之四 顺序测试

    前文中所提到的测试都是针对一个方法进行的独立测试,即使是同事测试多个方法,他们之间也没有影响.但是在实际的生产过程中,更多的情况是方法与方法之间是存在相互的逻辑关系的,所以也就有了今天要介绍的顺序测试 ...

  5. VS2010单元测试入门实践教程

    单元测试的重要性这里我就不多说了,以前大家一直使用NUnit来进行单元测试,其实早在Visual Studio 2005里面,微软就已经集成了一个叫Test的专门测试插件,经过几年的发展,这个工具现在 ...

  6. [转]Visual Studio 2010 单元测试目录

    Visual Studio 2010 单元测试共分七个部分: 普通单元测试.顺序单元测试.压力测试,Generic测试.数据库测试.UI界面测试和Web性能测试. 这个系列的博客实例程序可以在下面的链 ...

  7. Visual Studio 2010 单元测试目录

    单元测试的重要性这里我就不多说了,以前大家一直使用NUnit来进行单元测试,其实早在Visual Studio 2005里面,微软就已经集成了一个叫Test的专门测试插件,经过几年的发展,这个工具现在 ...

  8. Visual Studio 单元测试之二---顺序单元测试

    原文:Visual Studio 单元测试之二---顺序单元测试 此文是上一篇博文:Visual Studio 单元测试之一---普通单元测试的后续篇章.如果读者对Visual Studio的单元测试 ...

  9. VS2010 有关测试的一些使用

    Visual Studio 2010 单元测试之一---普通单元测试:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175362.aspx   V ...

随机推荐

  1. Javascript 汉字转拼音

    调用方式: var pinyin = convert("欢迎光临"); alert(pinyin); 新建JS文件:PYConvert.js,内容如下: var PinYin = ...

  2. Android 设计随便说说之简单实践(合理组合)

    上一篇(Android 设计随便说说之简单实践(模块划分))例举了应用商店设计来说明怎么做模块划分.模块划分主要依赖于第一是业务需求,具体是怎么样的业务.应用商店则包括两个业务,就是向用户展示appl ...

  3. Eclipse闪退/打不开/无法启动/一闪而过

    转自:http://my.oschina.net/psuyun/blog/421058 很长时间了,写java.写android都是用的Eclipse.可是突然有一天,当我像往常一样试图打开Eclip ...

  4. EventBus3 简单使用及注意点

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 # EventBus3 简介 EventBus Android 发布/订阅事件总线,可简化 Activities, Fr ...

  5. MORE ABORT AWR?

    For some time, Oracle’s solution in this area has been its built-in tool, Statspack.Oracle Database ...

  6. [转]toString()方法

    文章转自:http://blog.sina.com.cn/s/blog_85c1dc100101bxgg.html 今天看JS学习资料,看到一个toString()方法,在JS中,定义的所有对象都具有 ...

  7. 中文翻译:pjsip文档(四)之ICE Session的使用方法

    1:pjsip教程(一)之PJNATH简介 2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介 3:pjsip教程(三)之ICE ...

  8. destoon代码从头到尾捋一遍

    destoon® B2B网站管理系统(以下简称destoon)由西安嘉客信息科技有限责任公司独立研发并推出,对其拥有完全知识产权,中国国家版权局计算机软件著作权登记号:2009SR037570. 系统 ...

  9. SQL的四种语言和数据库范式

    1. SQL的四种语言 DDL(Data Definition Language)数据库定义语言 CREATE ALTER DROP TRUNCATE COMMENT RENAME DML(Data ...

  10. Django如何设置proxy

    设置porxy的原因 一般情况下我们代理设置是针对与浏览器而言,通常只需在浏览器设置中进行配置,但它只针对浏览器有效,对我们自己编写的程序并任何效果,这时就需要我们在软件编码中加入代理设置. --- ...