TDD应该为测试用例创建一个空类吗?

时间:2014-03-10 06:13:01

标签: class unit-testing testing tdd methodology

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

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

第二种方法似乎是递归的,可能会让我失去思路,而第一种方法则会创建一个没有测试的新课程。

我有没有想到的第三种方法,哪种更好?

2 个答案:

答案 0 :(得分:6)

你可以双向前进。有时,只是创建一个新的辅助类并暂时将其保留为空shell是一种很好的方法。

然而,TDD的主要好处是反馈关于您的代码,所以如果您经常遇到这种情况,您应该停下来考虑一下这会告诉您API的设计。

尽管如此,这没有什么本质上的错误,因为它还取决于你的整体方法。如果你正在做Outside-In TDD,这往往会发生很多事情,因为你从抽象层面开始并逐渐减少(而且情人级别的课程还不存在)。

另一方面,如果你做自下而上TDD ,这不应该经常发生,因为你从构建块开始,然后从那些构成更高级别的类积木。

无论如何,'递归'方法是一个使用Git真正发光的情况的一个例子,因为每次你体验到你需要在之前编写另一个测试你正在写的那个,你可以去

git stash

然后编写新测试。当你完成新测试后,你可以去

git stash pop

返回原始测试。你可以递归地做到这一点,这样可以帮助你跟踪你的想法。

答案 1 :(得分:2)

在咨询了几位同事后,答案就出现了!

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