在测试项目中应用Pex的经验分享

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和一般的单元测试分开,如图:

test

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重新生成测试。

Leave a Reply

Your email address will not be published. Required fields are marked *