TDD: 测试静态方法
2013-07-17 11:05 Spring.Guo 阅读(489) 评论(0) 编辑 收藏 举报对于静态方法,mock框架大多不支持测试。所以需要修改代码,以便调用的静态方法可测试。
1 一个静态方法类:
public class MyHelper
{
public static string GetHelp()
{
return "This is help";
}
}
2 使用该静态方法的调用类,
public class MyManager
{
public bool IsManaged { get; set; }
public void Manage()
{
string help = MyHelper.GetHelp();
IsManaged = (!string.IsNullOrEmpty(help));
}
}
3 修改2的代码,模拟2中粗体代码部分
public class MyManager
{
public bool IsManaged { get; set; }
public void Manage()
{
string help = GetHelp();
IsManaged = (!string.IsNullOrEmpty(help));
}
protected virtual string GetHelp()
{
return MyHelper.GetHelp();
}
}
4 在测试框架代码中创建一个Stu类,来模拟
public class MyManagerStub:MyManager
{
protected override string GetHelp()
{
return "this is help from stub";
}
}
5 现在可以通过测试Stu类来间接测试实际的代码了
public void TestMe()
{
MyManagerStub manager = new MyManagerStub();
manager.Manage();
Assert.AreEqual(true, manager.IsManaged);
}