单元测试——TDD应该为测试用例创建一个空类



我是TDD的新手,并且很想开始使用它,但是每当我正在处理的测试用例需要一个尚不存在的类(无论是作为输入还是作为输出)时,我就会遇到障碍。

问题是,我不知道是否创建没有任何功能的类(这被认为是未经测试的代码吗?),或者停止测试(当它是绿色的),并开始为这个新的不存在的类编写测试。

第二种方法似乎是递归的,可能会导致我失去思路,而第一种方法创建了一个没有测试的新类。

有没有我没有想到的第三种方法呢?

这两种方法都可以。有时,仅仅创建一个新的辅助类,并暂时将其作为空shell是一种很好的方法。

然而,TDD的主要好处是关于你的代码的反馈,所以如果这种情况经常发生在你身上,你应该停下来考虑一下这告诉你关于你的API设计的什么。

不过,这本身并没有什么错,因为这也取决于你的整体方法。如果您使用的是由外至内的TDD,这种情况往往会经常发生,因为您从抽象级别开始,然后一直往下工作(恋人级别的类还不存在)。

另一方面,如果您使用自下而上的TDD,这种情况不应该经常发生,因为您从构建块开始,然后从这些构建块组成更高级的类。

在任何情况下,"递归"方法都是使用Git真正发挥作用的一个例子,因为每当你遇到需要在之前编写另一个测试时,你可以去
git stash

,然后编写新的测试。当你完成了新的测试,你可以进入

git stash pop

返回原始测试。您可以递归地执行此操作,因此它可以帮助您跟踪您的想法。

在咨询了几位同事之后,我终于有了答案!

当测试类A并在测试中发现我需要一个不存在的类B时,我将B创建为一个接口而不是一个类。这将解决问题(即接口不能/不需要测试),并有助于更好的分离和抽象。

最新更新