我和一位朋友正在讨论这个问题,而直觉上似乎没什么区别,我想知道是否有人在这个单元测试之前或之后是否有充分的理由来编写存根。
答案 0 :(得分:1)
我认为它并不重要,只要最终你有两个代码编译(或者在解释语言的情况下,不会引发方法未找到错误)。
但是,由于这是测试驱动开发,因此关注这些并首先编写它们是有意义的。有时候,即使我清楚地知道如何构建代码,只有在编写测试时我才会意识到API是无用的并且最终会改变它。在编写测试后编写存根使这更容易。
答案 1 :(得分:0)
如果您正在进行TDD,您将首先编写测试并同时实现任何所需的测试基础结构(如存根),这样您就可以在运行测试主题后对存根进行基于状态的验证(也称为被测系统或SUT)。
我很难设想在需要它们的测试之前编写存根,但也许这对你来说可能更好 - 无论如何,将TDD作为一种工作方式很难掌握,所以我的建议是保持它并找出最适合你的方法。
就个人而言,我几乎没有想过存根,因为使用模拟测试是我喜欢的方式(基于行为的验证而不是基于状态)。你没有提到你正在使用什么工具;对于你的工具来说,也许没有一个很好的模拟对象工具包(尽管我怀疑你现在找不到大多数语言的东西)。不过,我可以想到相当多的模拟对象库,比如Java工作,我真的只对其中的一两个有耐心,所以再次尝试和发现你最喜欢的东西是有意义的。