【发布时间】:2015-09-16 22:57:16
【问题描述】:
如果单元测试驻留在另一个程序集中,是否值得将类访问修饰符(最初为 no 或 internal )更改为 public 以进行单元测试? private 或 internal 表示类被封装在程序集中。如果答案是否定的,C# 中的解决方法是什么?
【问题讨论】:
-
不要测试私有/内部方法 - 测试任何使用私有/内部方法。
-
它是类访问修饰符 - 不是方法。就像公共课 Foo。在我的情况下,不测试整个班级是不可接受的。
-
我在一个博客中发现了这一点:“有一个学派支持 only 公共 api 需要进行单元测试的政策。这不是真的 -我坚信你所有的方法和行为都需要单元测试。”
-
也许有一些技巧 - 例如在 C++ 中,为了测试受保护的方法,我可以从测试类继承而无需更改测试代码。在 C# 中,如果它不是公共的,我不能从另一个程序集的测试类继承。
-
[InternalsVisibleTo]可能会对您有所帮助。把所有东西都公开是个坏主意。您应该能够使用公共 API 覆盖所有代码。如果您无法从公共 API 访问它,您不妨删除该代码。
标签: c# unit-testing