繁体   English   中英

练习执行TDD和Mocking等良好实践

[英]Exercises to enforce good practices such as TDD and Mocking

我正在寻找能够提供实际课程计划或途径的 资源 ,以鼓励和加强TDD模拟等编程实践。 有很多资源可以显示示例,但我正在寻找一些实际上提供了进展的东西,它允许学习概念而不是强制仿真

我的主要目标是加快某人理解TDD背后的概念并实际有效实施它们的过程。 有这样的免费资源吗?

这是一件很难鼓励的事情,因为它可以被(非常公平地)视为一个改变海洋的东西; 与其说是一个目标的进展,而是一个完全不同的方法。

建议的简短清单是:

  • 你需要成为领导者,你需要在说服他人之前变得精通,你需要能够向他人展示道路并解决他们的不确定性。

  • 首先要熟练自己编写单元测试

    • 练习为现有方法编写测试。 您可能会在桌面上试图测试大量代码 - 但这不是因为测试很难或者您无法理解测试; 它更有可能是因为您现有的代码和编码风格不是很容易测试。

    • 如果您很难入门,那么找到最简单的方法,并将它们作为起点。

  • 然后专注于提高您生成的代码的可测试性

    • 最重要的提示:让事情变得更小,更重要。 这是一个巨大的变化 - 这是让自己去做的最困难的部分,甚至更难说服其他人。

就个人而言,在阅读鲍勃·马丁的“清洁代码”一书时,我有了“清晰的时刻”; 一个早期的章节讨论了一个干净的方法会是什么样子,作为一个例子,他采用了一个大约40行的方法,在视觉上类似于我生成的东西,并将其重构为一个几乎没有更大的行计数但是没有任何东西的类。但一口大小的方法,每个可能3-7行。

看看这些itty-bitty方法,它突然点击了单元测试基石“每个测试只测试一件事”,当你的方法只做一件事情时最容易实现(并且在没有30个内部机制的情况下做一件事)。

好的是你可以立即开始应用你的发现; 练习编写小方法和小类并沿途进行测试。 你可能会开始很慢,并且相当快地遇到一些障碍,但前几个月将帮助你指出正确的方向。

您可以尝试参加(如果您附近没有人,可以主持一个!) 编码道场

我参加了一个这样的练习,学习TDD很有趣。

书籍总是一个很好的资源 - 即使不是免费的 - 他们可能值得你花时间寻找好的免费资源 - 这些书费用的钱。

Kent Beck撰写的实验为依据的测试驱动开发”

James W. Newkirk和Alexei A. Vorontsov撰写的“Microsoft .NET中的测试驱动开发”

请随时添加到此列表中

我完成的一件事让我更感谢TDD更多的是NHibernate和工作单元模式 虽然它特定于NHibernate和.NET,但我喜欢它的排列方式。 使用TDD,您可以开发一些实际有用的东西(UnitofWork)而不是一些简单的“这就是模拟看起来像”的例子。

我如何最好地学习一个概念就是将它用于实际需要。 我建议你看一下文章的结构,看看它是否符合你的要求。

极客们非常善于衡量指标,无论他们是否对他们有益!

你可以利用这个优势。 设置CI服务器并在代码覆盖率降至50%以下时使构建失败。 让他们知道阈值每月会上升10%直到90.你可能会使用一些提交钩子阻止他们开始检查代码,但我自己从未尝试过。

让他们知道团队的报道将在任何绩效评估等中生效。通过强调团队的覆盖范围,你应该得到同伴的压力,帮助你确保良好的报道。

这只会确保他们正在测试他们的代码,而不是他们测试代码的程度,以及他们是否首先编写测试。 然而,它强烈鼓励(或强迫)他们将测试纳入他们的日常开发过程。

一般来说,一旦人们在他们的过程中有某些东西,他们就会想要尽可能轻松/有效地做一些事情。 TDD是编写具有高覆盖率的代码的最简单方法,因为如果不覆盖代码,就不会编写一行代码。

寻找有经验的人并与他们交谈。 如果没有本地开发人员组,则启动一个。

您还应该尝试将事情推得太远,然后了解何时退出。 例如,当有人问“如果我们没有getter编程怎么办”时,整个模拟事情开始了。

最后,学习“听取测试”。 当测试看起来很可怕时,请考虑它是否是错误的代码,而不是您的测试技术。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM