VSTS写单元测试
用VSTS写单元测试
许多应用程序都会用到“用户”类型,今天我要用的是ConsoleApplication1名字
1.打开VS2013 --> 新建一个项目。这里我们默认创建一个控制台项目。取名为ConsoleApplication1
2.在解决方案里面新增一个单元测试项目。取名为默认ConsoleApplication1
创建完毕后项目结构大概如下:
3.进入控制台项目UnitTestDemo的Program类库,创建一个Add方 UnitTestDemo
{ public class User { public void User(string userEmail) {
m_emaile=userEmaile;
} private string m_emaile ;//user emaile as user as user id
}
}
4.我们的出现“New Test Project”弹窗,目的就是单元测试方法运行。
5.在单元测试项目后,注意到中,出现三个新的文,引用控制台项目,引用完毕后项目结构如下:
6.单元测试项目里面UnitTest1这个类的名字取得太难看了,我们把名字改为ProgramTest,表明这是在测试Program类。改完如下:
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestDemoTest { [TestClass] public class ProgramTest { [TestMethod] public void TestMethod1() { } } }
7.一个好的测试方法。应该在最基本的功能,参数上验证程序的正确性,单元测试应该测试最基本的单元,在此基础上,可以测试一些系统中最基本的功能点。
系统中最基本的功能点
8.可以这样理解,一个方法必须具有TestMethod特性,且其所属的类具有TestClass特性,那么这个方法才会被VS承认为一个单元测试方法。
如果没有上面的两个特性中的一个,编译生成是没有任何问题的。但是VS不会把其作为一个单元测试方法。
9.依次点击VS的菜单栏测试--> 窗口-->测试资源管理器,可以打开测试资源管理器。
10.测试资源管理器里面会显示当前解决方案里面的所有单元测试。说明白点就是这里只显示符合要求的方法。
你可能会说,为什么上面的图里面什么都没显示,TestMethod特性和TestClass特性现在不是都有吗?
原因是你还没有生成程序集就可以看到测试资源管理器中显示了TestMethod1:
11.我们要清楚我们创建单元测试的初衷:是用工具帮助我们测试软件的质量、稳定性、性能等等。VS在这里就充当了工具的作用。
12.回到命名的问题,很明显TestMethod这个名字太难看了,我们把它改成AddTest表示这是在测试Add方法。
UnitTestDemoTest() { [TestClass] public class ProgramTest { [TestMethod] public void AddTest() { } } }
13.截止目前,我们已经建立了一个可以执行的测试框架,虽然没有起到什么作用,但是测试已经可以执行了。
执行测试的方法之一是:右键点击需要测试的【单元测试】方法的名称,选择运行:
运行测试之后,可以在测试资源管理器中查看测试的结果:
执行单元测试的方法有很多,这些需要我们在不断的学习中去体会。
14.接下来我们做一点有意义的事情。改进AddTest方法:
if(!m_email.Contains("@"))
{
throw new ArgumentException(); //抛
}
:
新建单元测试在解决方案上新建项目-》托管测试项目在需要进行c语言测试运行测试可以看到测试通过。
17.最后,注意在单元测试中,VSTS自动为我们生成了测试的骨架,如果还在使用***.Inconclusive。表明这是个未经测试的。详情参考如上。