我正在尝试按照行为驱动开发的方式编程,该方法规定在编写任何代码前必须先编写失败的单元测试。
我的问题如下:
- 如何在私有方法中使用BDD?
- 如何对私有方法进行单元测试?
是否有比以下两种方法更好的解决方案:
- 首先将私有方法公开,然后在编写使用这些私有方法的公共方法时再将它们设为私有;
或者 - 在C#中将所有私有方法设置为internal并使用InternalsVisibleTo属性。
我正在尝试按照行为驱动开发的方式编程,该方法规定在编写任何代码前必须先编写失败的单元测试。
我的问题如下:
是否有比以下两种方法更好的解决方案:
如果你发现自己想要测试一个私有方法,那么它可能存在一些复杂性,你想要测试它是正确的,这是一种设计上的问题。将该方法暴露在接口上只会换来另一种更糟糕的问题。
是时候进行重构了 :)
通常我会将内部复杂性分解到一个辅助类中。但是请检查该方法是否存在“特征嫉妒”或“不当亲密关系”。可能有更好的位置适合该方法存在。现在,在 .net 中使用扩展方法,甚至基本类型也可以成为一个好的选择。
祝你好运