因此,我试图将自己转变为更加以测试和行为为导向的方法来进行开发。这对我有好处,而且我在迄今为止用过的几个项目中看到了很好的结果。
我当前的项目是一个基于FUSE的文件系统 - 我想在基本的文件系统访问中添加一些功能,所以FUSE似乎很合适。我真正需要做的就是实现一组适合适当接口的函数,将其适当地包装起来然后去。
然而,先测试一下,我提醒自己。我已经编写了一套黄瓜功能来阐述整个应用程序应该如何工作的基本期望,所以现在是时候开始测试内部了。
现在,我可以为我需要为接口编写的每个函数编写单元测试,然后编写接口 - 但这似乎不会过度测试 - 驱动我。当然测试存在,但界面真的是推动事物的发展。
我是不是错了?或者我期待太多了?
如果您认为这应该是社区维基,请在评论中给我一个“什么 - 什么” - 我甚至无法确定这个是否正确答案。
答案 0 :(得分:1)
步骤1.界面必须做什么?一件事。
步骤2.您如何证明它做了那件事?
步骤3.编写测试以证明界面确实做了那件事。
步骤4.运行测试 - 它将失败。你还没有真正写过界面。
步骤5.对界面进行编码。
步骤6.测试将通过。
继续接下来必须的界面。
这与您已经设计的功能几乎没有关系。这完全集中在必须界面的外部可见特征上。事实证明你的功能是正确的。或者可能结果是你过度设计了这些功能。或者他们的设计不足。关键是要将您的设计从必须所做的事情以及测试来证明它必须做的事情。
答案 1 :(得分:0)
即使它只关注Ruby,The rspec book也很好地介绍了BDD周期。
答案 2 :(得分:0)
我想在基本的文件系统访问中添加一些功能,所以FUSE看起来很合适
很难开发保险丝fs。两个主要问题是非常难以调试和多线程。我也有(现在有)测试我的fs的问题。也许inotify会满足您的要求。