使用VisualStudio进行单元测试之一
2013-09-12 20:35
274 查看
使用VisualStudio中的单元测试功能,可以很方便的创建单元测试项目、编写单元测试代码以及执行单元测试。而如何在VisualStudio中使用单元测试功能,就是本文和后面几篇想要说的了。
1.创建测试项目
在创建测试项目之前,我们还需要有一份待测试的代码,下面的是我准备的一小段代码。
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
创建测试项目有两种方法,一种是在代码窗口中右键点击鼠标,选择【创建单元测试】。
![](http://images.cnitblog.com/blog/53231/201309/05200829-e88e8aa92214469d8689a4847d6af622.png)
点击之后,会弹出下面的【创建单元测试】的对话框,选中要进行单元测试的方法,再选择对应的输出项目,如果解决方案中已经存在测试项目,则在【输出项目】的下拉框里会默认选中这个项目,没有则需要选择新建测试项目。点击【确定】就可以完成测试项目的创建了。
![](http://images.cnitblog.com/blog/53231/201309/05200829-08a1fd83c1f242b6a7f7bf4a52fa88c6.png)
需要说明的是,在Visual tudio 2010中,代码窗口的右键菜单里是默认有【创建单元测试】这项的,但在Visual Studio 2012里却消失了,需要大家手动把它调出来,具体方法可以参考http://www.jb51.net/softjc/83751.html
还有一种方法是在解决方案资源管理器里,通过右键新增测试项目 ,和新增其他项目是一样的,最后选择项目的时候选择单元测试项目就可以了。只是这样建好项目后,针对各个方法的测试代码就全都需要手动去写了,当然也可以 按照上面的方法去让Visual Studio自动生成,只要在【创建单元测试】的窗口中选择刚刚新建的测试项目作为【输出项目】就行了。
2.维护测试代码
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
简单介绍一下测试代码,首先是使用了TestClass特性来标识这个类中包含测试方法。然后是TestContext属性,这个属性用于在测试中提供 上下文信息,实际使用过程中会有多种用途,在后面我会在用到时在详细介绍,本文的测试过程中并没有用到这个属性。【附加测试特性】中的代码因为暂时用不到 而且会显得代码太过冗长,所以被我删掉了,里面的内容我们也会在后面陆续的接触到。最下面的两个方法则是针对我们代码中的Add()和Div()产生的两 个测试方法。与测试类一样,测试方法也有个特性来标识--【TestMethod()】。
以
最后测试的结果会如图所示,显示的信息包括执行的测试,运行时间,未通过的测试还会给出相应的失败信息,以供跟踪解决问题。修改代码,保存后再点击全部运行,或者选择只运行失败的测试,来测试修改的结果,直到测试全部通过。
到此为止,一个最基本的,而且不够完善的单元测试就算完成了,下一篇将继续来完善对这两个方法的测试。
1.创建测试项目
在创建测试项目之前,我们还需要有一份待测试的代码,下面的是我准备的一小段代码。
namespace BigMan.UnitTest { public class Program { public static int Add(int a, int b) { return a + b; } public static int Div(int a, int b) { return a / b; } static void Main(string[] args) { } } }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
创建测试项目有两种方法,一种是在代码窗口中右键点击鼠标,选择【创建单元测试】。
![](http://images.cnitblog.com/blog/53231/201309/05200829-e88e8aa92214469d8689a4847d6af622.png)
点击之后,会弹出下面的【创建单元测试】的对话框,选中要进行单元测试的方法,再选择对应的输出项目,如果解决方案中已经存在测试项目,则在【输出项目】的下拉框里会默认选中这个项目,没有则需要选择新建测试项目。点击【确定】就可以完成测试项目的创建了。
![](http://images.cnitblog.com/blog/53231/201309/05200829-08a1fd83c1f242b6a7f7bf4a52fa88c6.png)
需要说明的是,在Visual tudio 2010中,代码窗口的右键菜单里是默认有【创建单元测试】这项的,但在Visual Studio 2012里却消失了,需要大家手动把它调出来,具体方法可以参考http://www.jb51.net/softjc/83751.html
还有一种方法是在解决方案资源管理器里,通过右键新增测试项目 ,和新增其他项目是一样的,最后选择项目的时候选择单元测试项目就可以了。只是这样建好项目后,针对各个方法的测试代码就全都需要手动去写了,当然也可以 按照上面的方法去让Visual Studio自动生成,只要在【创建单元测试】的窗口中选择刚刚新建的测试项目作为【输出项目】就行了。
2.维护测试代码
using BigMan.UnitTest; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; namespace UnitTestProject1 { /// <summary> ///这是 ProgramTest 的测试类,旨在 ///包含所有 ProgramTest 单元测试 ///</summary> [TestClass()] public class ProgramTest { private TestContext testContextInstance; /// <summary> ///获取或设置测试上下文,上下文提供 ///有关当前测试运行及其功能的信息。 ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region 附加测试特性 #endregion /// <summary> ///Div 的测试 ///</summary> [TestMethod()] public void DivTest() { int a = 1; // TODO: 初始化为适当的值 int b = 1; // TODO: 初始化为适当的值 int expected = 1; // TODO: 初始化为适当的值 int actual; actual = Program.Div(a, b); Assert.AreEqual(expected, actual); //Assert.Inconclusive("验证此测试方法的正确性。"); } /// <summary> ///Add 的测试 ///</summary> [TestMethod()] public void AddTest() { int a = 1; // TODO: 初始化为适当的值 int b = 1; // TODO: 初始化为适当的值 int expected = 2; // TODO: 初始化为适当的值 int actual; actual = Program.Add(a, b); Assert.AreEqual(expected, actual); //Assert.Inconclusive("验证此测试方法的正确性。"); } } }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
简单介绍一下测试代码,首先是使用了TestClass特性来标识这个类中包含测试方法。然后是TestContext属性,这个属性用于在测试中提供 上下文信息,实际使用过程中会有多种用途,在后面我会在用到时在详细介绍,本文的测试过程中并没有用到这个属性。【附加测试特性】中的代码因为暂时用不到 而且会显得代码太过冗长,所以被我删掉了,里面的内容我们也会在后面陆续的接触到。最下面的两个方法则是针对我们代码中的Add()和Div()产生的两 个测试方法。与测试类一样,测试方法也有个特性来标识--【TestMethod()】。
以
方法
AddTest() 为例,来看一下测试方法的基本结构。第一步,对a, b, expected声明并进行了初始化,它们分别对应了Add(int,int)方法的两个参数以及期望的返回值;声明actual,并调用Add方法将实 际结果赋值给它。经过这两步,数据就准备完成了,最后是对测试结果进行判断,称之为(Assert)断言。本例中使用了Assert.AreEqual(
),初次之外,Assert还有一系列的断言方法,如AreNotEqual,IsNull,IsNotNull,IsInstanceOfType等等,不在此一一列举了,大家可以在Visual Studio中通过代码的智能提示学习一下,或者干脆看一下MSDN的文档。最后一行的Assert.Inconclusive("验证此测试方法的正确性。");可以注释掉,否则会在运行测试时会跳过这个测试方法,并提示
"验证此测试方法的正确性"。我们修改一下测试方法中的参数a和b,以及期望结果的值,然后运行测试方法。
3.运行测试并查看测试结果
运行测试的方法也有多种,既可以通过代码窗口中鼠标右键的菜单中选择【运行测试】,也可以通过菜单栏中的【测试】-【运行】-【所有测试】来运行测 试,Visual Studio 2010 中还可以直接点击工具栏上的按钮来执行,但是在Viual Studio 2012中默认好像也消失了,应该还是需要手动来设置。
最后测试的结果会如图所示,显示的信息包括执行的测试,运行时间,未通过的测试还会给出相应的失败信息,以供跟踪解决问题。修改代码,保存后再点击全部运行,或者选择只运行失败的测试,来测试修改的结果,直到测试全部通过。
到此为止,一个最基本的,而且不够完善的单元测试就算完成了,下一篇将继续来完善对这两个方法的测试。
相关文章推荐
- 使用VisualStudio进行单元测试之三
- 使用VisualStudio进行单元测试之四 顺序测试
- 使用VisualStudio进行单元测试
- 使用xUnit为.net core程序进行单元测试(1)
- 如何使用NUnit进行单元测试
- 使用DbUnit进行数据库操作的单元测试
- spring3.0 使用 AbstractTransactionalJUnit4SpringContextTests 进行单元测试
- 使用Junit4和JMockit进行单元测试
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- 使用Microsoft Fakes进行单元测试(2)
- 使用MbUnit进行数据驱动测试(单元测试)
- 如何使用NUnit进行单元测试
- 使用VS2012内建的C++测试架构进行单元测试
- 使用 Microsoft Fakes 进行单元测试
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- 使用IdleTest进行TDD单元测试驱动开发演练(2)
- 在MyEclipse中使用JUnit4进行单元测试
- 使用NUnit在.Net编程中进行单元测试
- 演练:使用 Visual Studio Team Test 进行单元测试
- 在Eclipse中使用JUnit4进行单元测试(初级篇)