【发布时间】:2010-09-28 00:58:42
【问题描述】:
我从未完全理解 TDD 的一个方面。
假设有人要求您实现一个简单的 Stack 对象。如果您正确地完成了设计,您将获得一个非常简单且干净的 API。假设:push()、pop() 和 isEmpty()。除此之外的任何事情都会过度扼杀需求,并让用户有太多空间来弄乱您的代码。
现在让我们假设您要对代码进行单元测试。如果你所有的公共方法都只是上面显示的三个,你怎么做呢?这些方法仅能完成您的测试。
因此,要么添加私有方法,这对您毫无帮助,因为它们对您的单元测试用例不可见。或者,您将这些方法公开,然后您的极简 API 就出现了,您为此努力工作。现在用户会弄乱你的 Stack 并且 bug 肯定会出现。
您如何处理开放公共测试方法与干净简单的 API 之间的困境?
编辑: 只是为了指出正确的方向,获得技术指针会很好(例如“使用此 hack 公开私有方法”等...)但我很喜欢更感兴趣的是关于这两个概念中哪一个更重要,以及你如何处理这个主题的更通用的答案。
【问题讨论】:
-
这是同一主题的另一个问题:How do you unit test private methods?
标签: unit-testing testing tdd