可以';t在受保护方法的单元测试的适当方法之间做出决定

本文关键字:方法 之间 决定 单元测试 受保护 可以 | 更新日期: 2023-09-27 17:57:32

免责声明:我知道在一个最佳的世界里,我们只从接口测试公共。然而,在现实中,我们通常有一个预先存在的代码库,它不是在TDD下开发的,因此需要一种更灵活的方法

我想为ASPX页面(blobb.ASPX。cs)设计测试方法,因为它没有使用接口来继承,而且有一些逻辑无法重构,所以我必须访问并测试它的受保护方法。我已经完成了谷歌搜索,并提出了两个不同的建议。

  1. 在中继承并测试,如本例所示
  2. 强制访问其他程序集,如本例所示

第一种方法似乎是人们普遍建议的方法,有很多博客在谈论SO,也有很多关于SO的答案在推荐它。然而,第二种方法在技术上似乎是最合适的,并且在社区中获得了巨大的支持,因为它是唯一一种在网络上很少被提及的眼球浏览提升器。我没有发现任何将两者对立起来的比较,也没有发现任何关于在什么情况下哪一种更合适的推理。

因此,我问道。

可以';t在受保护方法的单元测试的适当方法之间做出决定

从我在MSDN上读到的内容来看,似乎可以自动为您生成专用访问者或InternalsVisbleTo

当您为C#中的内部方法或方法,则会出现一个对话框允许您在访问内部方法之间进行选择使用专用访问器或使用InternalsVisibleToAttribute。

发件人:https://msdn.microsoft.com/en-us/library/bb385974(VS.100).aspx

但后来我读到:

Visual Studio 2010和将不会包含在Visual Studio的未来版本中。

发件人:https://msdn.microsoft.com/en-us/library/dd293546(v=vs.100).aspx

显然,您仍然可以滚动自己的访问者,但这将是一项单独的开发工作。即使是自动生成一个继承类也会很痛苦。而你只是在创造一个元错误的来源。

因此,听起来InternalsVisibleTo是可行的,也许您可以将受保护的方法更改为"受保护的内部"。这样,您就可以访问它们,而无需为元错误创建另一个测试表面。