2014-01-06 113 views
0

现在是时候看到一些看起来很简单的问题了,我似乎无法找到答案。TDD:构造函数注入和变异测试

我正在开发一个TDD(PHP)库。据我的理解,当使用TDD时,你不应该写任何生产代码没有先写一个失败的测试来保证它

  1. 我有一个mutator方法,它将数据追加到具有私有可见性的数组。我应该如何测试?我应该只测试一下各种访问器吗?对访问者的测试是否应该覆盖增变器方法?

  2. 测试是否可以测试访问器和增变器,还是应该单独进行测试?

  3. 我的库需要依赖项,我将通过构造函数注入。什么测试代码可能会提示我编写构造函数代码?

对不起这样的反对问题。我一直在研究TDD,并且认为我已经搞清楚了,但只要我尝试使用它,就会想到所有这些小问题。很显然,我想确保这一点,我会尽我所能地有效实施。

也许我太严格了?也许注入是使用模拟和检查对使用注入类的方法的期望隐式测试的?

我知道这些问题可能是主观的,答案可能基于人们的意见,但我对此很满意。我只是想以一种合理有效的方式开始工作。

非常感谢提前。

+0

只是我对3的回答:“可能是使用模拟隐式地测试了注入,并检查了使用注入类的方法的期望值?”是的,我就是这么做的。 –

+0

而且我亲自测试了setter + getter,因为没有其他方法(我不会尝试访问私有属性,如果实现更改,那么测试会爆炸)。但我很想知道是否有替代品/更好的方法存在。 –

回答

1

我会一起测试setter和getter方法,因为这是迄今为止最简单的方法,而不必更改数组的可见性,这是​​您不应该这样做的。这些测试将隐式测试您的注入类。

一般来说,尝试从另一个用户的角度编写你的单元测试,试图使用你的类测试。你需要思考,这个类应该做什么或者它的合约是什么(即这个类包含一个用户可以添加和删除的对象数组),然后编写测试以确定它满足那个合同。之后,编写足够的代码让测试通过。

+0

非常好。感谢您的澄清。 :) – thefuzzy0ne