0

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

假设我正在和另一个人一起做一个项目。我正在处理组件 A,他正在处理组件 B。它们一起工作,所以我将 B 存根用于测试,而他将 A 存根。我们正在使用 DVCS,比如说 Git,因为实际上是这样这里。

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

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

假的东西根本不应该进入VC吗?他们应该在合并之前被撕掉吗?对不起,如果这个答案应该是显而易见的或微不足道的,我只是在这里寻找“建议的做法”。

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

4

3 回答 3

1

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

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

于 2010-04-30T16:38:02.573 回答
1

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

  • 组件 A 的单元测试是针对假组件 B 编写的
  • 组件 B 尚未准备好,但现在已准备好
  • 您想重构测试以使用真正的组件 B 而不是假货

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

至于具有相同名称的赝品和真实类,我将通过您和其他开发人员就在文件结构中保留假货而不是真实类的位置达成一致的一些策略来解决这个问题。

于 2010-05-03T00:24:35.077 回答
0

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

如果可能,您还应该使用动态模拟。对于 .NET,Rhino.Mock 或 Moq 之类的东西允许您以编程方式制作模拟,而不是保留文件和假货。

于 2010-04-30T16:39:54.643 回答