这个示例所使用的测试框架为NUnit,大家可以到http://www.nunit.org/下载该工具
测试项目中需要引用NUnit中的nunit.framework.dll
如何使用NUnit可以看这篇文章 一步一步学NUnit
我们就以一个简单的需求开始吧。
需求
员工登陆系统,输入登陆名密码,系统返回是否登陆成功
我们首先先对这个需求写测试用例
1
[TestFixture]
2
public class EmployeeTest
3
{
4
[Test]
5
public void LoginTest()
6
{
7
Employee em = new Employee();
8
Assert.IsTrue(em.Login("admin", "admin"), "用户登陆测试失败");
9
}
10
}
[TestFixture]2
public class EmployeeTest3
{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>
4
public 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
}
/// <summary>2
/// 员工类3
/// </summary>4
public class Employee5
{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>
4
public 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
}
/// <summary>2
/// 员工类3
/// </summary>4
public class Employee5
{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="用户验证测试失败")]
3
public void ValidateLoginName()
4
{
5
Employee em = new Employee();
6
em.Login(null, null);
7
}
[Test]2
[ExpectedException(typeof(ArgumentException),ExpectedMessage="登陆名不能为空", UserMessage="用户验证测试失败")]3
public 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>
7
public 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
}
/// <summary>2
/// 员工登陆3
/// </summary>4
/// <param name="loginName">登陆名</param>5
/// <param name="password">密码</param>6
/// <returns></returns>7
public 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工具中测试一下,都是绿灯了
基本功能我们完成了,在下一节中我们将讲解如何对这个代码进行重构,尽请期待。。。


浙公网安备 33010602011771号