TDD的一个方面,我从来没有完全理解.
假设有人要求你实现一个简单的Stack对象.如果您正确地完成了设计,您将会看到一个非常小巧干净的API.假设:push(),pop()和isEmpty().任何事情都超过了这个要求,并且允许用户太多的空间弄乱你的代码.
所以现在让我们假设你想对你的代码进行单元测试.如果所有的公共方法只是上面显示的三个方法,你该怎么做?这些方法将仅在您的测试中进行.
因此,您可以添加私有方法,因为您的单元测试用例不可见,这些方法根本无法帮助您.或者您将这些方法公开,并且您的努力工作的简约API.现在用户将会混乱你的Stack,而且bug一定会来的.
您如何处理开放公开测试方法与简洁API的困境?
编辑:只是指向正确的方向,很高兴得到技术指标(如“使用这个黑客暴露私人方法”等),但我更多地关注更多的通用答案关于什么这两个概念更重要,你如何处理这个问题.
>测试功能;这通常意味着测试公共接口 – 不应该通过公共接口访问所有功能?如果他们不是,那么他们不是功能!可能有例外,但我不能想到任何. >测试公共接口;没有必要直接或间接从公共接口调用的任何方法.它们不仅不需要被测试,它们根本不需要存在.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。