测试驱动开发实践——入门篇

这个示例所使用的测试框架为NUnit,大家可以到http://www.nunit.org/下载该工具。

  测试项目中需要引用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}

  这样的代码在这里是编译不通过的,我们首先要去创建一个Employee类,并创建Login(string loginName,string password)方法:

 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
posted @ 2009-06-22 11:46  广陵散仙(www.cnblogs.com/junzhongxu/)  阅读(242)  评论(0编辑  收藏  举报