TDD:为什么、如何和真实世界的测试驱动代码
首先,请容忍我所有的问题。我以前从未使用过TDD,但我越来越意识到我应该这样做。我已经阅读了很多关于TDD的帖子和指南,但有些东西还不清楚。用于演示的大多数示例都是数学计算或其他一些简单操作。我也开始读罗伊·奥舍洛夫关于TDD的书。以下是我的一些问题: 如果您的解决方案中有一个对象,例如Account类,那么测试在该对象上设置属性(例如帐户名)的好处是什么,那么您可以断言您设置的任何内容都是正确的。这会失败吗 另一个例子,账户余额,创建一个余额为300的对象,然后断言余额实际上为300。那怎么会失败呢?我在这里测试什么?我可以看出,用不同的输入参数测试减法运算会是一个更好的测试 我应该测试对象的实际用途是什么?方法还是属性?有时,在基础结构层中还将对象作为服务。对于方法,如果您有一个三层应用程序,并且业务层正在为某些数据调用数据层。在这种情况下测试什么?参数?数据对象不为空?服务方面呢 然后,关于我的问题,关于现实生活中的项目,如果你有一个绿色项目,你想开始与TDD。你先从什么开始?你是把你的项目分成几个功能,然后tdd每个功能,还是你真的任意挑选,然后从那里开始 例如,我有一个新项目,它需要登录功能。我是否从创建用户测试、帐户测试或登录测试开始。我先从哪一个开始?那门课我先考什么 假设我决定创建一个具有用户名、密码和一些其他属性的用户类。我应该首先创建测试,修复所有构建错误,运行测试以使其失败,然后再次修复以获得绿灯,然后重构。那么,我应该在该类上创建的第一个测试是什么?例如:TDD:为什么、如何和真实世界的测试驱动代码,tdd,Tdd,首先,请容忍我所有的问题。我以前从未使用过TDD,但我越来越意识到我应该这样做。我已经阅读了很多关于TDD的帖子和指南,但有些东西还不清楚。用于演示的大多数示例都是数学计算或其他一些简单操作。我也开始读罗伊·奥舍洛夫关于TDD的书。以下是我的一些问题: 如果您的解决方案中有一个对象,例如Account类,那么测试在该对象上设置属性(例如帐户名)的好处是什么,那么您可以断言您设置的任何内容都是正确的。这会失败吗 另一个例子,账户余额,创建一个余额为300的对象,然后断言余额实际上为300。那怎么会
- 用户名\u长度\u大于\u 6
- 用户名\u长度\u小于\u 12
- 密码复杂性
测试将显示您需要上述内容。然后你去试驾他们。看看低级BDD。介绍得很好 与其测试属性,不如考虑您正在寻找的行为。例如:
Account Behavior:
should allow a user to choose the account name
should allow funds to be added to the account
User Registration Behavior:
should ensure that all usernames are between 6 and 12 characters
should ask the password checker if the password is complex enough <-- you'd use a mock here
帐户行为:
应允许用户选择帐户名
应允许将资金添加到帐户中
用户注册行为:
应确保所有用户名都在6到12个字符之间
应询问密码检查器密码是否足够复杂不要测试太简单而无法破解的密码
- getter和setter太简单了,不能被破坏,所以说,代码太简单了,错误不会发生
- 测试公共方法并断言响应符合预期。如果方法返回void,您必须测试“附带后果”(有时并不容易,例如测试发送的电子邮件)。当这种情况发生时,您可以使用mock来测试方法的执行方式,而不是测试响应(您可以询问mock被测试的类是否以所需的方式调用他)
我开始学习Katas的基础知识:JUnit和TestNG;然后是哈姆克雷斯特;然后阅读EasyMock或Mockito文档
在github或此处查找katas
http://codingdojo.org/
第一次测试应该是最简单的!可能只是强迫你创建剪切(测试中的类)
不过,还是试试katas吧
testdrivendevelopment Yahoo集团有一些非常明智和乐于助人的成员。