刚刚开通博客,借此机会谈谈在本公司项目单元测试中用到的Fakes测试框架,和其他测试框架不同,Fakes大大提高了单元测试的性能,我们不需要关心数据库的数据变化,接口调用导致的变化,文件、及其它资源的访问等问题。使用伪造处理方法可以只关心我们需要测试的那部分逻辑。

      Fakes使用起来也比较方便,在Visual Studio 2012中已经内置了该框架,可以提供成员模拟的方法,以方便进行单元测试。

  下面就具体说说该如何使用,写了一个简单的例子,(本打算直接把公司项目中代码展示出来,但Boss说那是不允许的,哈哈,所以大家见谅!有问题可以单独联系我)

 

  假设我们在项目中GreatWall有以下几个类

//接口
public interface IT
{
    int AddText(int a, int b);
}

public class T,IT
{
   public int AddText(int a, int b)
        {
            return a + b;
        }
}

 public class MyClass
    {
        public static int GetAddText(IFwProductRepository obj)
        {
            int a=2;
            int b=5;
            return obj.AddText(a,b);
        }
    }
View Code

 我们要使用Fakes进行测试只需要在测试项目中引用 GreatWall,并且在之上右键->建立 Fakes程序集即可使用Fakes,在测试方法中使用就可以了,

[TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            IT t = new StubITy()
            {
                AddTextInt32Int32=(x,y)=>
                {
                    return x+y;
                }
            };
            Assert.AreEqual(7, MyClass.GetAddText(t));
        }
    }
View Code

就这么简单,根本不需要与数据库打交道。

 

posted on 2013-06-14 18:15  柳风W  阅读(360)  评论(1编辑  收藏  举报