假设我们正在使用 TDD 实现一个Stack
类,我们需要为 Stack 类的每一位功能添加一个新的测试来练习它:
[TestMethod] public void Should_Be_Empty_After_Instantiation()
[TestMethod] public void Should_Not_Be_Empty_After_Pushing_One_Item()
...
现在,另一方面,在进行单元测试时,应该关注我们的类应该提供的外部行为,因此单元测试集检查我的 Stack 接口的所有预期契约是否得到满足。
我的问题是如何调和这两个方面。
例如,假设我在Stack
内部使用了一个初始大小为 8 的数组,如果我的用户想要插入第 9 个项目,我会希望它增长。为了添加调整大小的功能,我希望至少有一个测试可以推动我的类代码朝那个方向发展(对吗?)。
另一方面,这将添加一个单元测试(或者这不是一个真正的单元测试吗?),它不执行类的实际合同(我假设用户不关心内部实现堆栈)但它的实现。
所以我们这里有一个转折点,我不知道如何解决。我在这里混淆概念了吗?
谢谢
编辑
经过大量谷歌搜索后,我来到了似乎可以解决此问题的以下链接:http: //stephenwalther.com/blog/archive/2009/04/11/tdd-tests-are-not-unit-tests.aspx