我是TDD的新手并且我很想开始使用它,但每当我正在处理的测试用例需要一个尚不存在的类时(无论是作为输入还是作为输出,我都会遇到冲击) )。
问题是我不知道是否创建没有任何功能的类(是否考虑未经测试的代码?),或者停止测试(当它是绿色时),并开始编写测试这个新的不存在的类。
第二种方法似乎是递归的,可能会让我失去思路,而第一种方法则会创建一个没有测试的新课程。
我有没有想到的第三种方法,哪种更好?
答案 0 :(得分:6)
你可以双向前进。有时,只是创建一个新的辅助类并暂时将其保留为空shell是一种很好的方法。
然而,TDD的主要好处是反馈关于您的代码,所以如果您经常遇到这种情况,您应该停下来考虑一下这会告诉您API的设计。
尽管如此,这没有什么本质上的错误,因为它还取决于你的整体方法。如果你正在做Outside-In TDD,这往往会发生很多事情,因为你从抽象层面开始并逐渐减少(而且情人级别的课程还不存在)。
另一方面,如果你做自下而上TDD ,这不应该经常发生,因为你从构建块开始,然后从那些构成更高级别的类积木。
无论如何,'递归'方法是一个使用Git真正发光的情况的一个例子,因为每次你体验到你需要在之前编写另一个测试你正在写的那个,你可以去
git stash
然后编写新测试。当你完成新测试后,你可以去
git stash pop
返回原始测试。你可以递归地做到这一点,这样可以帮助你跟踪你的想法。
答案 1 :(得分:2)
在咨询了几位同事后,答案就出现了!
当测试A类并发现中间测试我需要一个不存在的B类时,我将创建B作为接口而不是类。这将解决问题(即不能/不需要测试接口)以及有助于更好的分离和抽象。