TDD:代码可测试设计
2013-10-22 17:28 Spring.Guo 阅读(574) 评论(0) 编辑 收藏 举报1 方法内部代码命令,查询分离。
a . 命令方法:执行一系列动作。
b. 查询方法: 执行查询动作,并返回值。
2 一个类中有好几个地方都用到了一个或多个全局变量,可以考虑把全局变量封装到另外一个类中。
a . 使用示例: 在程序运行前,需要初始化的全局变量,或者缓存数据。
3 通过子类来解除代码之间的依赖。
a . 同层多个类之间的依赖解除,使用一个virtual 方法来包裹依赖对象的方法,通过stub桩子类来进行测试。
public class PageLayout{
private int id =0;
private List styles ;
private StyleTemplate template;
protected void BindStyles()
{
styles =StyleMaster.FormStyle(template ,id);
//....
}
}
以上代码 依赖了一个SytleMaster类的FormStyle 方法. 把该方法代码解除依赖: 如下:
public class PageLayout{
private int id =0;
private List styles ;
private StyleTemplate template;
protected void BindStyles()
{
styles =FormStyles(template,id);
//....
}
protected virtual List FormStyles(StyleTemplate template,int id)
{
return StyleMaster.FormStyle(template ,id);
}
}
PageLayout 对 StyleMaster.FormStyle(template ,id) 方法的依赖被分离到一个FormSyles 方法中。那么,我可以创建一个测试子类,来测试
public calss TestPageLayout: PageLayout
{
[Test]
public void TestBindStyles()
{
PageLayout pl = new TestPageLayout();
// Test BindStyles Method.
pl.BindStyles(); //....
}
protected override List FormStyles(StyleTemplate template,int id)
{
return new arraylist();
}
}