免责声明:我知道在最佳世界中,我们只从界面测试公众。然而,实际上,我们经常有一个先前存在的代码库,这个代码库不是在TDD下开发的,因此需要采用更灵活的方法。
我想为ASPX页面设计测试方法( blobb.aspx.cs ),因为它没有使用接口来继承,并且有一些逻辑无法重构,我必须访问并测试它的受保护方法。我做了googlearch并得出了两个不同的建议。
第一种方法似乎是广泛建议的,并且有大量的博客在谈论以及SO推荐它的答案。所以似乎有一个关于这个主题的概念。然而,第二种方法似乎在技术上是最合适的,并且在社区中有一个默认的支持,只有在网络上非常稀少地提到的唯一的眉毛提升器。我没有找到任何比较,将两者相互对立,也没有任何理由在哪种情况下更合适。
因此,我问。
答案 0 :(得分:1)
从我在MSDN上阅读的内容来看,您可以自动为您生成私有访问者或InternalsVisbleTo
在C#或a中为内部方法创建单元测试时 在Microsoft Visual Basic中的朋友方法,出现一个对话框 允许您选择访问内部方法 使用私有访问者或使用InternalsVisibleToAttribute。
来自:https://msdn.microsoft.com/en-us/library/bb385974(VS.100).aspx
但后来我读到了:
在Visual Studio 2010中已弃用Accessor 将不会包含在Visual Studio的未来版本中。
来自:https://msdn.microsoft.com/en-us/library/dd293546(v=vs.100).aspx
显然,您仍然可以使用自己的访问器,但这本身就是一项开发工作。即使自动生成一个继承的类也会很痛苦。而你只是在创造一个元bug的来源。
所以听起来像InternalsVisibleTo是要走的路,也许你将受保护的方法改为"受保护的内部"。通过这种方式,您可以访问它们,而无需为要隐藏的元错误创建另一个测试表面。