代码改变世界

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();

}

}