Yuv*_*dam 16 testing tdd unit-testing
TDD的一个方面我从未完全理解.
假设有人要求您实现一个简单的Stack对象.如果您已经正确完成了设计,那么您将获得一个非常简洁的API.假设:push(),pop()和isEmpty().除此之外的任何事情都会过度消耗需求,并让用户有太多空间来捣乱您的代码.
所以现在让我们假设您要对代码进行单元测试.如果您所有的公共方法都只是上面显示的三个方法,那么您如何做到这一点?到目前为止,这些方法只会进行测试.
因此,要么添加私有方法,它们根本不会帮助您,因为它们对您的单元测试用例不可见.或者你将这些方法公之于众,那就是你努力工作的简约API.现在用户将要乱用你的堆栈,肯定会出现错误.
您如何处理打开公共测试方法与干净简单API的这种困境?
编辑:只是为了指向正确的方向,获得技术指针(例如"使用此hack来暴露私有方法"等等)会很高兴但是我对更通用的答案更感兴趣这两个概念更重要,以及您如何处理这个主题.
Ste*_*owe 14
测试功能; 这通常意味着测试公共接口 - 因为不应该通过公共接口访问所有功能吗?如果他们不是,那么他们不是功能!可能有例外,但我想不出任何.
测试公共接口; 任何不直接或间接从公共接口调用的方法都是不必要的.它们不仅不需要进行测试,而且根本不需要存在.
| 归档时间: |
|
| 查看次数: |
1886 次 |
| 最近记录: |