小编Jas*_*son的帖子

单元测试私有代码

我目前正在使用C#进行开发 - 这里有一些背景知识:我们用我们的客户端应用程序实现MVP,并且我们有一个循环规则,它规定没有方法应该具有大于5的圈复杂度.这会导致许多小的私有方法这通常是一件事.

我的问题是关于单元测试一个类:

通过公共方法测试私有实现都很好......我没有遇到实现这个问题的问题.

但是......以下情况如何:

示例1.处理异步数据检索请求的结果(回调方法不应仅供公开测试)

示例2.执行操作的事件处理程序(例如更新View标签的文本 - 我知道的愚蠢示例......)

示例3.您正在使用第三方框架,该框架允许您通过覆盖受保护的虚拟方法进行扩展(从公共方法到这些虚拟方法的路径通常被视为黑盒编程,并且将具有框架提供的各种依赖性你不想知道)

上面的例子在我看来并不是设计不佳的结果.他们似乎也没有成为单独进行单独测试的候选人,因为这样的方法会失去他们的背景.

没有人对此有任何想法吗?

干杯,杰森

编辑: 我认为我在原始问题中不够清楚 - 我可以使用访问器测试私有方法,并使用TypeMock模拟调用/方法.那不是问题.问题是测试不需要公开或不公开的东西.

我不想为了测试而公开代码,因为它可能会引入安全漏洞(只发布一个接口来隐藏它不是一个选项,因为任何人都可以将对象强制转换回其原始类型并获取访问权限我不希望他们)

被重构到另一个类进行测试的代码很好 - 但可能会失去上下文.我一直认为让'辅助'类可以包含一堆没有特定上下文的代码是不好的做法 - (在这里思考SRP).我真的不认为这适用于事件处理程序.

我很高兴被证明是错的 - 我只是不确定如何测试这个功能!我一直认为,如果它可以破坏或改变 - 测试它.

干杯,杰森

c# testing methods tdd private

15
推荐指数
3
解决办法
5559
查看次数

我可以回去不使用ReSharper吗?

我现在正在使用ReSharper(用于C#)工作了大约2年.我真的失踪ReSharper的时候,我没有它-我能回去过不使用ReSharper的?

c# resharper

3
推荐指数
1
解决办法
826
查看次数

标签 统计

c# ×2

methods ×1

private ×1

resharper ×1

tdd ×1

testing ×1