Can't decide between appropriate approach to unit testing of protected methods
免责声明:我知道在最佳世界中,我们只从界面测试公众。然而,实际上,我们经常有一个先前存在的代码库,它不是在TDD下开发的,因此需要更灵活的方法。
我想为ASPX页面设计测试方法(blobb.aspx.cs),因为它没有使用接口来继承而且有一些逻辑无法重构,我必须访问并测试受保护的方法它的。我做了我的googlearch并得出了两个不同的建议。
第一种方法似乎是广泛建议的,并且有大量的博客在谈论以及SO推荐它的答案。所以似乎有一个关于这个主题的概念。然而,第二种方法似乎在技术上是最合适的,并且在社区中有一个默认的支持,只有在网络上非常稀少地提到的唯一的眉毛提升器。我没有找到任何比较,将两者相互对立,也没有任何理由在哪种情况下更合适。
因此,我问。
从我在MSDN上阅读的内容来看,您可以自动为您生成私有访问者或InternalsVisbleTo
When you create a unit test for an internal method in C# or for a
friend method in Microsoft Visual Basic, a dialog box appears that
allows you to choose between having your internal methods accessed
with the private accessor or with the InternalsVisibleToAttribute.From: https://msdn.microsoft.com/en-us/library/bb385974(VS.100).aspx
但后来我读到:
The use of Accessors has been deprecated in Visual Studio 2010 and
will not be included in future versions of Visual Studio.From: https://msdn.microsoft.com/en-us/library/dd293546(v=vs.100).aspx
显然,您仍然可以使用自己的访问器,但这本身就是一项开发工作。 即使自动生成一个继承的类也会很痛苦。 而你只是在创建一个meta-bug的来源。
所以听起来像InternalsVisibleTo是要走的路,也许你将受保护的方法改为"受保护的内部"。 这样您就可以访问它们,而无需为元错误创建另一个测试表面。