版本控制 - 存根和模拟

时间:2010-04-30 16:34:44

标签: version-control mocking stub

为了这个问题,我不关心存根,模拟,假人,假货等之间的区别。

假设我正在与另一个人合作开展一个项目。我正在研究组件A,他正在研究组件B.他们一起工作,所以我把B剔除进行测试,然后他把它剔除A.我们在DVCS工作,让我们说Git,因为实际情况就是如此这里。

当需要将我们的组件合并在一起时,我们需要从我的A和他的B中获取“真实”文件,但丢弃所有假的东西。在开发期间,可能(除非我需要学习如何正确存根)假货具有与真实物品相同的文件名和类名。

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

假的东西根本不属于VC吗?它们应该在合并前被撕掉吗?对不起,如果对此的回答应该是明显的或微不足道的,我只是在这里寻找“建议的做法”。

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

3 个答案:

答案 0 :(得分:1)

假货仍然应该在源控件中,可能在不同的包/命名空间下,以便单元测试使用。进行集成测试,使用两个实际组件,但保持单元测试隔离。

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

答案 1 :(得分:1)

基本上就是这种情况(为了确保我正确理解):

  • 组件A的单元测试是针对假组件Bs
  • 编写的
  • 组件B尚未就绪,但现在它已
  • 您想重构测试以使用真实组件B而不是假货

我实际上不会建议做最后一步。我会保留现有的针对假Bs 的A单元测试,因为他们应该测试A.现在A和B都准备好了,我会写一组新的集成测试,测试A和B之间的交互

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

答案 2 :(得分:0)

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

如果可能的话,你应该使用动态模拟。对于.NET,像Rhino.Mock或Moq这样的东西允许你以编程方式制作模拟而不是保存文件和假货。