2010-04-30 50 views
0

对于这个问题的缘故,我不关心存根,嘲笑,假人,假货的区别等版本控制 - 存根和嘲笑

比方说,我工作的一个项目,一个别人。我正在开发组件A,他正在开发组件B,他们一起工作,所以我将B存根进行测试,然后他将存根(stubs out)A.我们在DVCS中工作,让我们说Git,因为实际上是这样的这里。

当需要将我们的组件合并到一起时,我们需要从我的A和他的B中获取“真实”的文件,但是要扔掉所有假冒的东西。在开发过程中,很可能(除非我需要学习如何正确存储事物),这些假货与真实的东西具有相同的文件名和类名。

所以我的问题是:什么是对假货进行版本控制的正确程序,以及如何正确合并组件,确保抓住真实的东西而不是假的?我猜想,一种方法就是做合并,期待它说CONFLICT,然后手动删除半合并文件中的所有虚假代码。但这听起来很乏味而且效率低下。

虚假的东西是不是应该在VC下进行?他们是否应该在合并之前被剔除?对不起,如果答案是明显或微不足道的,我只是在这里寻找“建议的做法”。

编辑:我没有意识到的一些更多的信息将证明是重要的。我特别谈论Web开发,更具体地说,我不是在谈论.NET开发。我的历史似乎在这方面误导了人们。

回答

1

所以基本上是这样的情况(以确保我理解正确):

  • 组分A股编写测试打击假冒组件烧烤
  • B组分还没有准备好,但现在它是
  • 你要重构测试,使用真正的成分B,而不是假货

我真的不建议这样做,最后一步的。我会离开现有的单元测试对于一个写假的Bs,因为他们应该是测试A.现在,A和B都准备好了,我会写一个新的集合集成测试,测试之间的相互作用A和B

至于假名和真实类具有相同的名称,我会用一些政策来解决这个问题,您和其他开发人员就如何在文件结构中保留假币而不是真正的类别达成一致。

1

假货应该仍然在源代码管理中,可能在不同的包/名称空间下,以供单元测试使用。使用这两个真实组件进行集成测试,但保持单元测试隔离。

您的生产代码应该引用接口或抽象基类,并且注入实现,以便您可以使用假货作为测试,但生产类用于真实事物。

0

git有一个.gitignore文件,允许您不在源代码管理中包含文件。

如果可能的话,你也应该使用动态模拟。对于像Rhino.Mock或Moq这样的.NET,您可以通过编程方式进行模拟,而不是保留文件&。

+1

有时嘲笑是最好的,有时假货是最好的。这取决于实际情况。对于协议测试,嘲笑确实非常方便 - 但在其他许多情况下,当您只希望它以一种明显的方式行事时,必须对该嘲讽进行“编程”真的很烦人。 – 2010-04-30 16:44:16

+0

我知道.gitignore和info/exclude。问题更多的是关于是否使用它。我也会更新我的问题。 – Tesserex 2010-04-30 17:23:53