惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Cisco Talos Blog
Cisco Talos Blog
C
Check Point Blog
博客园_首页
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Martin Fowler
Martin Fowler
Recorded Future
Recorded Future
S
Security @ Cisco Blogs
L
LINUX DO - 最新话题
博客园 - 司徒正美
P
Privacy International News Feed
G
Google Developers Blog
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Scott Helme
Scott Helme
K
Kaspersky official blog
I
InfoQ
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Webroot Blog
Webroot Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
大猫的无限游戏
大猫的无限游戏
D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
量子位
H
Hacker News: Front Page
Simon Willison's Weblog
Simon Willison's Weblog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
SecWiki News
SecWiki News
S
Security Affairs
Latest news
Latest news
人人都是产品经理
人人都是产品经理
C
CERT Recently Published Vulnerability Notes
S
Security Archives - TechRepublic
V
Visual Studio Blog
T
Troy Hunt's Blog
S
Secure Thoughts
F
Fortinet All Blogs
V
V2EX
The Register - Security
The Register - Security
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - 吾爱乐乐

SQL 2005 Report Server 请求因 HTTP 状态 400 失败: Bad Request 处理方法 的解决方法 让DIV产生滚动条 最新最全的ASP.NET学习资源大全 .NET开发人员必备下载工具 window xp,oracle数据库、plsql的tns连接失败,的解决办法。 实现iFrame自适应高度 - 吾爱乐乐 - 博客园 罪案现场4-古堡谜踪 C#反射之一(Assembly.Load及Assembly.Load.CreateInstance方法介绍) 一些关于Castle + Nhibernate+ ASP.NET的资源,我收集了一下,发布出来,供大家学习方便。 最近研究DONET的开发框架,在网上收集了一些资源。写道博客上已备忘 软件工程师不可不知的10个概念 经典书籍下载。 关于MOSS的学习方向(多加了一本开发方向的书) SharePoint 2007开发、管理工具集 把Execel直接导入数据库的SQL语句 适合大部分的存储过程分页 - 吾爱乐乐 SQL 常用连接字符串 如何制作一个 https 网站?IIS配置HTTPS服务的方法 repeater基本使用方法,挺简单的,供大家共享 - 吾爱乐乐
单元测试详细介绍,和大家分享
吾爱乐乐 · 2009-02-09 · via 博客园 - 吾爱乐乐
 

VS2005单元测试的工具主要集成在VS开发者版与VS测试者版这两个版本中。当然我们平时装的是Visual Studio Team Suit也有这个工具,具体可见下图所示:

                       

1 单元测试工具介绍

1.1  VS2005单元测试详细介绍

单元测试是一种编程的测试,我们必须先进行单元测试只有通过了单元测试后才可以进行WEB测试与负载测试。对于这些测试既可以使用Visual Basic或Visual C#编写,还可以采用Visual C++编写并用/clr:safe选项进行编译。在VSTS这个软件中单元测试主要是以类或一个方法的形式进行测试,也就是说是针对方法进行测试。

在VS2005中,我们如果用Visual C#进行编写单元测试,其主要步骤是通过直接调用类的方法并传递参数来执行其他源代码。然后,如果在测试中包含有Assert语句,他可以测试得到值与我们所期望的值是否相符。我们这个单元测试是位于测试类中,而这个测试类又位地原代码中。

测试项目是独立与源代码项目,具体可如下图所示:

2测试项目与原代码的关系

1.2    单元测试结构

单元测试可以使用能够创建测试的初始源代码的代码自动生成来创建单元测试,也可以由使用者手动编写测试代码。无论使用何种方法,测试类和所有测试方法都用编程属性加以标识。

用[TestClass()]属性标记每个测试类如下图所示:

3测试类

使用[TestMethod()]属性标记每个测试方法如下图所示:

4测试方法

1.3    单元测试的管理

在VS2005主要采用测试管理器和测试视图来管理单元测试。

5测试管理器窗口与测试视图窗口位置

6测试管理器

7测试视图窗口

1.4    单元测试结果的查看

在VS2005中我们可以通过测试结果查看窗口进行测试结果的查看。

8测试结果查看

当一个单元测试运行结束后,该测试工程都会在该工程文件夹下建立一个测试结果目录用于存放测试的结果,用户从这个测试目录中可以知道当时的输入测试用例以及结果测试用例。如下图所示:

9测试结果的存放

1.5    Assert类的使用

使用Assert类可以对特定功能进行验证,单元测试方法执行开发代码中的方法代码,但只有包含Assert语句时才能报告代码行为方面的内容。

Microsoft.VisualStudio.TestTools.UnitTesting命名空间提供了若干类型的Assert类,Assert在测试方法中,可以调用任意数量的Assert类方法,如Assert.AreEqual()方法。Assert类有很多方法可供选择,其中许多方法具有多个重载。

使用CollectionAssert类可比较对象集合,也可以验证一个或多个集合的状态。

使用StringAssert类可以对字符串进行比较。此类包含各种有用的方法。如:StringAssert.Contains、StringAssert.Matches和StringAssert.StartWith。

AssertFailedException只要测试失败,就会引发AssertFailedException异常。如果测试超时,引发意外的异常,或包含生成了Failed结果的Assert语句,则测试失败。

AssertInconclusiveException只要测试生成的结果是Inconclusive,就会引发AssertInconclusiveException。通常,向仍在处理的测试添加Assert.Inconclusive来指明该测试尚未准备好,不能运行。

1.6    单元测试的步骤

1             用户打开目前已有的项目,在已有的项目文件中选取要进行单元测试的类文件,将其打开,选择当前类文件下的一个方法。

2             用鼠标右击该方法名,则这时弹出快捷菜单。在快捷菜单中选中创建单元测试菜单项。

上述操作可见下图所示:

10一二步操作结果

3             接着将弹出创建单元测试对话框,系统自动选中你当时所选的方法。点击确定系统将自动生成该单元测试的方法名为:“AccountTest.cs”如下图所示:

                                                            

11创建单元测试对话框

4             这时用户点击解决方案管理器中,AccountTest.cs测试文件,查找到[TestMethod()]属性标识的测试方法,对该测试单元中所需要对象的参数进行赋值,并设定返回的预期值使用Assert.AreEqual方法进行断言判定,则到此单元测试的方法就已经宣告建立成功了!如下图所示:

12单元测试方法语句详解

5             经过上述设置后,接下来我们所要做的就是设法去运行该测试方法,VS2005为我们提供了一个友好的界面,方便我们来管理各个测试方法。用户可以通过菜单栏测试选项下拉菜单的窗口菜单项选定测试管理器。在弹出的测试管理器选项卡中对生成的你将要运行的测试程序文件进行勾选,然后点击运行即可。如下图所示:

图13测试方法的运行

6             当我们运行了测试接下来我们就等着看测试的结果,VS2005将在下方自动弹出测试结果选项窗口即图8所示。这时程序会给出你所测试的方法是否通过以及该测试方法的代码覆盖等相关信息。

1.7    单元测试需要注意的问题

1             单元测试结果的代码覆盖率不可能得到100%,所以在测试过程中应配合软件工程的相关知识分别进行语名覆盖、判定覆盖、条件覆盖、判定与条件覆盖、条件组合覆盖、路径覆盖等以达到测试代码覆盖率百份之百的效果。

2             单元测试可用于对C#中属性的测试

3             单元测试也可用于ASP.NET的测试,不过该测试只对ASP.NET网页中所使用的类文件进行,不能提供页面的测试如果要对页面进行测试可以采用WEB测试来进行。

4             对ASP.NET类文件的测试过程中,对于调试执行测试方法。需要采用菜单栏下的调试选项下的附加到进程aspnet_wp.exe进程中,这时才可以采用断点调试测试方法。

5             对ASP.NET类文件进行调试测试方法要注意就是一定要有Web.config配置文件,不然的话单元测试也是无法进行调试。

6             除也上述生成的调试注意事项外还有一条注意事项,因为ASP.NET是一个IIS的站点,所以它需要一个Windows集成验证的权限,所以我们必需在IIS服务项中设定windows集成身份验证。

8)    这里我们甚至不要考虑我们本身的项目究竟有没有实现该功能,但我们应该该知道,我们需要什么功能.我们只针对应该产生的结果写测试代码.当测试不通过时,我们只需要修改我们的目标项目,而不再需要修改我们的测试项目.这其实正是TDD(测试驱动开发)的思想,我们如果要验证我们的方法有没有错,只需要run一下test即可,真正实现了全自动化单元测试,这里边的实际开发效率的提高,只有你在真正体会过后才能明白:)