Aqu*_*nas 2 integration-testing unit-testing mstest
对于单元测试,你不应该测试私有方法,是的,但对于集成测试(使用像MSTest或NUnit这样的单元测试框架),我非常希望针对测试URL运行内部API调用,以确保当前代码适用于第三方API供应商更改其后端的情况.
鉴于系统的复杂性(愚蠢的API有数百个参数),我将大部分隐藏在接口和IoC之后,API辅助类完全在我们的数据层库内部.我不想改变它,因为它曾经是公开的,我们发现这个奇怪的开发人员是项目的新手并且缺乏经验将会立即继续并直接从网站代码调用api.使类内部应该确保它们至少在破坏我们的抽象层之前进行思考.
我一直在构建大量的反射代码来获取内部方法,但它运行得不太好并且正在获得sphagetti-ish.有没有办法让这些方法对某些库公开可见?有没有办法让测试库将自己视为包含api的库的一部分?这是最好的做法吗?
该InternalsVisibleTo属性是你的朋友在这里=)如果你将它放在AssemblyInfo.cs中(至少这就是我通常把它),并指定测试的名称(或多个)您想公开内部方法/其它组件,它们然后可用.额外的好处(至少在我看来)是Visual Studio的智能感知系统/编译器知道属性及其目的,你将为内部方法提供完整的智能感知.
与反射不同,每当您更改内部方法签名时,如果不提供编译时错误,它就不会崩溃.