白盒测试是软件测试的一个基本概念,而白盒测试的工具可以减少测试员手动编写测试所花费的时间与经历。下面看看微软***发布的白盒测试框架Pex的情况。
不久前微软发布了新版本的Pex框架,其中的Moles组件可用于模拟框架中包括静态成员在内的几乎所有成员,大幅提高了对测试的支持程度。
Pex是微软研究院构建的自动白盒测试框架,它的目标是让程序员减少手动编写大量单元测试的情况。Pex允许开发人员编写单独的参数化测试方法,并根据测试方法的逻辑分支自动生成测试数据及Assert语句。虽然开发人员还是需要手动编写单元测试,但是Pex可以确保对代码进行了充分的测试。
Pex附带一个迂回框架(Detour Framework)Stubs。与其他如Rhino Mocks,Moq框架不同,Stubs并非使用Emit的方式动态创建类型,而是生成类型安全,可重构,可调试的源代码。Stubs框架会为每个方法生成一个委托类型的成员,开发人员可以通过委托的指定方法的行为。
新版的Pex框架中发布了一个名为Moles的组件,它可以被看作是Stubs框架的扩展,可用于模拟所有的.NET成员,包括静态方法,非虚方法以及密闭类型。例如,OperationContext.Current静态属性在IIS环境外的情况下总是返回null,但使用Moles之后,测试方法便可以摆脱IIS的依赖:
目前Moles的功能还不够完整,它不支持对构造函数及外部方法的模拟,以及mscorlib中一部分和CLR集成过于紧密的类型。
您可以从微软研究院网站上下载Pex框架,更多有关Pex、Stubs和Moles的信息可参考它们的主页。
【编辑推荐】