使用*_Accessor对私有成员进行单元测试
本文关键字:成员 单元测试 Accessor 使用 | 更新日期: 2023-09-27 18:29:57
我目前正在VS2010中开发C#解决方案。
为了为我的业务流程编写足够的单元测试,我使用Accessor方法来访问和更改我的业务对象的内部。
我的TFS构建服务器上出现的问题是,现在我已经在许多其他测试程序集中向我的objet程序集添加了访问器,当我的测试运行并没有通过所有测试时,有些测试失败,并发出以下警告:
…<测试失败消息>。。。…无法加载文件"ObjectLibrary_Accessor,版本=0.0.0.0,Culture=neutralm PublicKeyToken=ab391acd9394'或其依赖项之一。。。。。。。
我认为问题在于,在编译每个测试程序集时,都会使用不同的强名称创建ObjectLibrary_Accessor.dll。因此,当编译某些测试时,即使dll位于预期位置,强名称检查也会失败,并出现上述错误。
我看到了很多选择,没有一个特别有吸引力,其中包括:
- 未使用访问器方法(_A)
- 为每个测试程序集设置不同的XX_Accessor.dll-是否可以更改生成的程序集的名称以避免冲突
- 更改我的集成构建,为每个测试项目使用不同的二进制文件文件夹(如何?)
- 其他我不知道的选择
我对人们对这个问题、解决方案和解决方案的任何建议或经验都很感兴趣(尽管我没有时间更改代码,所以选项1不是我的最爱)。
Accessor
方法有点脆弱。
通过使用InternalsVisibleTo
assembly属性,可以使内部项对测试代码可见。
如果你想获得私有方法,并且你使用的是.NET 4.0,那么可以考虑使用像Trespasser这样的东西来简化这一点。
有关更多选项,请参阅此问题的答案:如何对私有方法进行单元测试?