【发布时间】:2016-11-22 01:38:36
【问题描述】:
免责声明:我确实知道,在最佳世界中,我们只从界面测试公众。然而,在现实中,我们经常有一个不是在 TDD 下开发的预先存在的代码库,因此需要一种更灵活的方法。
我想为一个 ASPX 页面 (blobb.aspx.cs) 设计测试方法,因为它没有使用接口来继承,而且有些逻辑无法重构,我必须访问和测试它的受保护方法。我已经完成了我的 googlearch 并得出了两个不同的建议。
- 在in this example 中进行继承和测试。
- 强制访问其他程序集,如图in this example。
第一种方法似乎是最广泛建议的方法,并且有大量博客在讨论以及关于 SO 推荐它的答案。所以似乎对这个问题有一个共识。然而,第二种方法在技术上似乎是最合适的,并且得到了社区的强烈支持,这是唯一一个在网络上很少提及的眉毛提升器。我没有发现任何将两者相互对比的比较,也没有发现在什么情况下更合适的推理。
因此,我问。
【问题讨论】:
-
AFAIK,
InternalsVisibleToAttribote无论如何都不会让您访问受保护的成员。 -
@dymanoid 哦,那它有什么作用呢?那么我链接到的答案(第 2 号)呢?
-
允许访问
internal方法。因此,您需要将要测试的所有protected成员更改为internal,这可能会破坏任何继承结构。 -
@toadflakz 实际上,我意识到我的陈述不清楚。没有必要用 substitute protected 代替 internal 因为有一个访问修饰符 protected internal,它(同样令人惊讶听起来)是listed by MS as a different one,而不是其他两个(尽管区别非常小)。
标签: c# asp.net unit-testing testing