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

  • 准备测试代码

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

        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. [Excel] C#GridViewExport帮助类,美化导出 (转载)

    主要功能如下1.将整GridView的数据导出到Excel中关增加一个效果线做美化最新的GridViewExport操作类看下面代码吧 /// <summary> /// 类说明:Grid ...

  2. A题笔记(10)

    No.1390 代码:https://code.csdn.net/snippets/191965  另一版本:https://code.csdn.net/snippets/192009 考察点有两个: ...

  3. 【基础】Oracle 表空间和数据文件

    多个表空间的优势:1.能够将数据字典与用户数据分离出来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突2.能够将回退数据与用户数据分离出来,避免由于硬盘损坏而导致永久性的数据丢失3 ...

  4. KMP算法_读书笔记

    下面是KMP算法的实现伪代码: KMP_MATCHER ( T, P ) . n = T.length . m = P.length . next = COMPUTE_PREFIX_FUNCTION ...

  5. ZOJ 2015 10月份 月赛 3911 Prime Query

    这道题我改啊,改啊,交啊,就对了. #include <stdio.h> #include <stdlib.h> #include <math.h> #includ ...

  6. js调用.net后台事件,和后台调用前台等方法以及js调用服务器控件的方法

    http://blog.csdn.net/deepwishly/article/details/6670942  ajaxPro.dll基础教程(前台调用后台方法,后台调用前台方法) 1. javaS ...

  7. Express使用html模板

    express默认使用jade模板,可以配置让其支持使用ejs或html模板. 1. 安装ejs 在项目根目录安装ejs. npm install ejs 2.引入ejs var ejs = requ ...

  8. Java-反射再学习

    反射之中包含了一个“反”的概念,所以要想解释反射就必须先从“正”开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产生实例化对象,但是“反”指的是通过对象找到类. packa ...

  9. TCP带外数据读写

    #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include &l ...

  10. Contest20140711 loop 数论

    loop|loop.in|loop.out 题目描述: 有N个点. 现在重复这样的操作: 随机找一个出度为0的点p1,随机找一个入度为0的点p2,连一条有向边从p1指向p2.直到没有出度为0的点. 统 ...