假如有一个类Own,我们期望对其Join方法进行单元测试以验证代码的正确性,类代码如下:
public class Own
{
public string Join(string a,string b)
{
return a + b;
}
}OK,在Join方法体上点击鼠标右键,选择"创建单元测试...",将弹出创建单元测试对话框,直接点击确定按钮后VS2008将自动创建好单元测试类OwnTest(有删改):
[TestClass()]
public class OwnTest
{
/// <summary>
///Join 的测试
///</summary>
[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("%PathToWebRoot%\\net", "/")]
[UrlToTest("http://localhost/")]
public void JoinTest()
{
Own_Accessor target = new Own_Accessor(); // TODO: 初始化为适当的值
string a = string.Empty; // TODO: 初始化为适当的值
string b = string.Empty; // TODO: 初始化为适当的值
string expected = string.Empty; // TODO: 初始化为适当的值
string actual;
actual = target.Join(a, b);
Assert.AreEqual(expected, actual);
Assert.Inconclusive("验证此测试方法的正确性。");
}
}可以看到,单元测试类OwnTest的类名和其方法都和原先的Own类非常相像。我们稍做下修改,设置下传入的参数值,并设置一个期望的返回值:
[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("%PathToWebRoot%\\net", "/")]
[UrlToTest("http://localhost/")]
public void JoinTest()
{
Own_Accessor target = new Own_Accessor();
string a = "mzwu"; // Join方法参数,这边设置一个初始值
string b = ".com"; // Join方法参数,这边设置一个初始值
string expected = "mzwu.com"; // 期望方法的返回值
string actual;
actual = target.Join(a, b);
Assert.AreEqual(expected, actual);//判断方法返回的值是否为我们期望的值
//Assert.Inconclusive("验证此测试方法的正确性。");
}在JoinTest方法体上点击右键,选择"运行测试",过一会在测试结果窗口中我们即可看到测试的结果。
注意,测试类必须TestClass标记,所有测试方法必须有TestMethod标记!此外,还有4个标记也比较常用:ClassInitialize、ClassCleanup、TestInitialize和TestCleanup,它们所标识的方法分别是在运行类中的第一个测试前先运行、运行完类中的所有测试后再运行、运行每个测试前先运行和运行完每个测试后运行。下边再来看下完整的OwnTest类:
[TestClass()]
public class OwnTest
{
private TestContext testContextInstance;
/// <summary>
///获取或设置测试上下文,上下文提供
///有关当前测试运行及其功能的信息。
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
#region 附加测试属性
//
//编写测试时,还可使用以下属性:
//
//使用 ClassInitialize 在运行类中的第一个测试前先运行代码
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext)
{
}
//使用 ClassCleanup 在运行完类中的所有测试后再运行代码
[ClassCleanup()]
public static void MyClassCleanup()
{
}
//使用 TestInitialize 在运行每个测试前先运行代码
[TestInitialize()]
public void MyTestInitialize()
{
}
//使用 TestCleanup 在运行完每个测试后运行代码
[TestCleanup()]
public void MyTestCleanup()
{
}
#endregion
[TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("%PathToWebRoot%\\net", "/")]
[UrlToTest("http://localhost/")]
public void JoinTest()
{
Own_Accessor target = new Own_Accessor();
string a = "mzwu"; // Join方法参数,这边设置一个初始值
string b = ".com"; // Join方法参数,这边设置一个初始值
string expected = "mzwu.com"; // 期望方法的返回值
string actual;
actual = target.Join(a, b);
Assert.AreEqual(expected, actual);//判断方法返回的值是否为我们期望的值
//Assert.Inconclusive("验证此测试方法的正确性。");
}
}[1]aspx.cs代码页中的类成员不可进行单元测试。
[2]单元测试:使用单元测试可以创建用 C++、Visual C# 或 Visual Basic 编写的、演练源代码的编程测试。单元测试可调用类的方法,传递合适的参数,并验证返回值是否为所期望的值。
评论(0)
暂无评论。