Pex是微软研究院开发的一个自动化白盒测试工具,前面我也写过一些博客来对Pex进行介绍,上周决定正式把Pex应用到真正的项目中,不过效果没有想象中的好,不过还是决定记录下一些心得。
1、关于测试类名称和测试方法名称
为了把Pex和其他的单元测试方法区分开来,本人选择了把所有Pex的测试都以PexTest作为方法名和类名的前缀。因为Pex会根据已经写好的 PUT(Parameterized Unit Test)生成一般的单元测试代码,规则可以自定义,一般都是PUT的名字然后跟上01,02,03……如果我们以PexTest作为前缀,那么就比较容易区分PexTest和普通的单元测试。
2、每个PexTest都会生成一些普通的单元测试代码,这些代码都是存放在一个叫{TestMethodName}.g.cs的文件中,对于这个文件里面代码,不建议手动修改。
3、在组织测试代码的时候,应该吧PexTest和一般的单元测试分开,如图:
4、如果需要测试Singleton实例中的方法,需要给这个实例创建一个带有[PexFactoryMethod]属性的方法,来告诉Pex如何获得Singleton实例。例如:
public static partial class CommentProviderFactory { [PexFactoryMethod(typeof(CommentProvider))] public static object Create() { return CommentProvider.Instance; } } |
5、Pex有时候会尝试着对.NET自带的代码也进行测试,如果遇到这种情况,可以在Pex Exploration Results窗口中把相关的方法标记为不检测。
6、如果修改了PUT,那么原来在{TestMethodName}.g.cs自动生成的测试方法有可能没法运行,可以把这个文件删掉,然后让Pex重新生成测试。