程序 卡塔
Java Web +数据库应用程序通常充满了技术。 其中许多很难测试,并且许多可能无法增加价值。 为了探究TDD和Java应用程序,我在2010年练习了Java EE Spike Kata。 这是我和Anders Karlsen在JavaZone 2010上做这个视频的视频 。
对于使用任何技术的程序员,类似的方法可能很有用。 因此,我给您:体系结构Spike Kata的规则。
问题
创建一个Web应用程序,使用户可以使用名称注册人员并搜索人员。 Person对象应保存在类似于您日常使用的技术的数据存储中(可能是关系数据库)。 目标是使尖峰脉冲尽可能快地工作,因此在第一次迭代中,Person实体可能只应包含一个字段。 您可以添加更多字段并在以后重构应用程序。
规则
最重要的规则是Robert Martin的测试驱动开发的三个规则:
- 没有测试就没有代码(也就是说,代码绝不应该做不需要通过测试的事情)
- 只有足够的测试才能变成红色(也就是说,测试应该运行 ,给出错误消息并且该错误消息应该纠正)
- 只有足够的代码才能变成绿色(也就是说,测试应该运行并且不会产生错误)
- (我的补充:重构为绿色而不添加功能)
其次,应从外部驱动应用程序。也就是说,您的第一个测试应该是通过http和html进行测试的顶级接受测试。 可以在第一次运行红色后注释掉该注释或@忽略此测试。
最后,在不这样做之前,您不应该引入任何技术。 第一次使用某种语言来编写kata时,请勿使用超出最低语言要求的网络框架(在Java中,这表示Servlet,在node.js中是require('http')
,在Ruby中是Rack)。 不要使用对象关系映射框架。 不要使用依赖注入框架。 绝对不要使用Rails脚手架,Spring Roo或Lift之类的应用程序生成器。 这些框架可以节省大量时间,但这是了解底层技术如何工作的方法。
作为第二次迭代,请使用每天使用的技术,但这一次是从头开始的。 例如,如果您的项目使用Hibernate,请尝试手动配置会话工厂。 通过以最简单的方式使用框架,您将了解有关它们带给表的内容以及如何正确使用它们的更多信息。 对于像Hibernate这样的复杂技术,没有什么能替代更深入的了解。
期待什么
到目前为止,我只用Java完成了Architecture Spike Kata。 但另一方面,我已经与十多个其他开发人员一起完成了大约50次。 之前,我已经在我的博客中撰写了有关如何开始使用Java EE Spike Kata(挪威语)的信息 。
这是我在Java中使用Web应用程序所学到的:
- 大多数Java Web框架似乎弊大于利
- Hibernate设置起来很麻烦,但是一旦运行起来,就可以节省很多麻烦
- 将TDD与Hibernate一起使用有助于我了解如何更有效地使用Hibernate
- 我已经停止使用依赖项注入框架(但是继续使用依赖项注入作为模式)
- 我了解了几种独立和集成测试Web应用程序和数据库访问的方法
- 我不再需要花费精力来编写用于全栈应用程序的测试
我第一次与另一位开发人员一起编写此kata时,大约需要3到5个小时,具体取决于我俩的经验水平。 经过几次运行后,大多数开发人员可以在不到一个小时的时间内完成任务。
通过实践,我们会变得更好,而Architecture Spike Kata是使用您每天使用的技术来实践TDD并更好地了解正在发生的事情的一种方式。
参考:来自我们JCG合作伙伴 Johannes Brodwall 的Architecture Spike Kata,来自“更大盒子内的思考”博客。
相关文章 :
翻译自: https://www.javacodegeeks.com/2011/12/architecture-spike-kata.html
程序 卡塔