Chi*_*sar 4 .net reflection unit-testing design-patterns accessor
最近为了实现类的私有方法的单元测试,我通过创建私有访问器而不是使用Reflection来使用PrivateObject,我收到了以下代码审查注释:
"我对私有对象的主要关注是在构造函数中使用object [].它取代了编译器强制执行的强类型操作和JavaScript式运行时错误检测.因此,个人而言,我不推荐它."
上面的评论让我感到困惑,因为根据我的理解,Reflection也需要object[]调用任何方法.请帮助我了解最佳方法.
这在伟大的书重构测试代码http://xunitpatterns.com/中称为测试特定子类或测试特定扩展
您可以在此处阅读有关测试私有方法的更多详细信息和想法:http://xunitpatterns.com/Test-Specific%20Subclass.html
它很像
public TestClass : RealClass
{
public int CallHiddenCalculate()
{
return Calculate(); // Calculate is now protected method that we expose for test purposes in this class
}
}
Run Code Online (Sandbox Code Playgroud)
您可以将此类放置为测试程序集,以便您的实际程序集不包含特定于测试的逻辑和类,因为它的设计很糟糕.
#if DEBUG
public
#else
private
#endif
在这种情况下,在Debug中,您可以调用单元测试,但在发布时,这些方法将不可见.然而,这种方法比上述方法更糟糕,也更丑陋.
仅仅测试公共接口可能是不够的(通常不是),以便说您获得了良好的测试覆盖率,并且您的代码易于维护和重构.
至于将私有方法标记为内部并且具有测试程序集,由于许多原因,内部方法很糟糕
而且我认为还有更多,但这些是最重要的
| 归档时间: |
|
| 查看次数: |
1973 次 |
| 最近记录: |