测试驱动开发实践——入门篇
这个示例所使用的测试框架为NUnit,大家可以到http://www.nunit.org/下载该工具。
这样的代码在这里是编译不通过的,我们首先要去创建一个Employee类,并创建Login(string loginName,string password)方法:
然后我们编译通过,但是测试亮红灯,测试失败,接下来我们实现这个方法:
测试项目中需要引用NUnit中的nunit.framework.dll
我们就以一个简单的需求开始吧。
需求
员工登陆系统,输入登陆名密码,系统返回是否登陆成功
我们首先先对这个需求写测试用例:
1[TestFixture] 2public class EmployeeTest 3{ 4 [Test] 5 public void LoginTest() 6 { 7 Employee em = new Employee(); 8 Assert.IsTrue(em.Login("admin", "admin"), "用户登陆测试失败"); 9 } 10} |
1/**//// <summary> 2/// 员工类 3/// </summary> 4public class Employee 5{ 6 /**//// <summary> 7 /// 员工登陆 8 /// </summary> 9 /// <param name="loginName">登陆名</param> 10 /// <param name="password">密码</param> 11 /// <returns></returns> 12 public bool Login(string loginName, string password) 13 { 14 return false; 15 } 16} |
1/**//// <summary> 2/// 员工类 3/// </summary> 4public class Employee 5{ 6 /**//// <summary> 7 /// 员工登陆 8 /// </summary> 9 /// <param name="loginName">登陆名</param> 10 /// <param name="password">密码</param> 11 /// <returns></returns> 12 public bool Login(string loginName, string password) 13 { 14 if (loginName == "admin" && password == "admin") 15 { 16 return true; 17 } 18 return false; 19 } 20} |
然后我们再进行测试,通过。
到这里我们基本功能已经测试成功了,但是这里还有我们还需要增加对用户名为空的验证,我们还是和上面一样先写一个测试用例:
1[Test] 2[ExpectedException(typeof(ArgumentException),ExpectedMessage="登陆名不能为空", UserMessage="用户验证测试失败")] 3public void ValidateLoginName() 4{ 5 Employee em = new Employee(); 6 em.Login(null, null); 7} |
这个代码在这里测试还是不通过的,因为我们没有实现,接下来我们实现这个判断,代码最后修改如下:
1/**//// <summary> 2/// 员工登陆 3/// </summary> 4/// <param name="loginName">登陆名</param> 5/// <param name="password">密码</param> 6/// <returns></returns> 7public bool Login(string loginName, string password) 8{ 9 if (string.IsNullOrEmpty(loginName)) 10 { 11 throw new ArgumentException("登陆名不能为空"); 12 } 13 if (loginName == "admin" && password == "admin") 14 { 15 return true; 16 } 17 return false; 18} |
然后我们在nunit工具中测试一下,都是绿灯了。
基本功能我们完成了,在下一节中我们将讲解如何对这个代码进行重构,尽请期待……
转自:http://www.51testing.com/html/79/n-132679.html