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

  • 准备测试代码

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

        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. dispatchkeyevent的调用机制

    http://blog.csdn.net/look85/article/details/23740761 dispatchKeyEvent和onKeyDown关系: 当键盘按下时 首先触发dispat ...

  2. Tomcat-java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory

    好些天没弄java了,今天开MyEclipse,发现启动Tomcat的时候发错了,后来发现,报错如题. 解决方案是将 bin/tomcat-juli.jar 添加到add tomcat classpa ...

  3. .Net下的MSMQ(微软消息队列)的同步异步调用

    一.MSMQ简介 MSMQ(微软消息队列)是Windows操作系统中消息应用程序的基础,是用于创建分布式.松散连接的消息通讯应用程序的开发工具.消息队列 和电子邮件有着很多相似处,他们都包含多个属性, ...

  4. oracle redo日志维护

    环境 OS:Red Hat Linux As 5 DB:10.2.0.1 1.添加日志组 alter database add logfile group 4 ('/u01/app/oracle/or ...

  5. 网站访问架构cdn与负载均衡

    曾经见到知乎上有人问“为什么像facebook这类的网站需要上千个工程师维护?”,下面的回答多种多样,但总结起来就是:一个高性能的web系统需 要从无数个角度去考虑他,大到服务器的布局,小到软件中某个 ...

  6. preg_replace($pattern, $replacement, $content) 修饰符的奇葩作用

    $str = "<span>lin</span> == <span>3615</span>";$pattern = "/& ...

  7. 那些年优秀的HTML5活动页面

    一个好的手机活动宣传 更能让人分享 传播是爆炸性的 下面是我平时看到一些好的微信活动宣传页面  分享给大家 其中用到的技术 常做微信活动 专题页面的人 可以看看大神们是怎么做的  这样到自己做的时候 ...

  8. 最常见的HTTP错误

    1. HTTP 500错误(内部服务器错误)对对HTTP 500错误的定义已经充分证明了这是一个最常见的HTTP错误. 一般来说,HTTP 500 错误就是web服务器发生内部错误时返回的信息. 例如 ...

  9. 【python】闰年规则

    公历闰年判定遵循的规律为: 四年一闰,百年不闰,四百年再闰. 公历闰年的简单计算方法(符合以下条件之一的年份即为闰年)1.能被4整除而不能被100整除.2.能被400整除.

  10. (C语言)char类型与int类型相加

    #include <stdio.h> int main(void) { ; ; int c = a + b; a += b; printf("c=%d",c); //p ...