FakesAssemblies文件应该添加到源代码管理吗?

时间:2012-04-05 18:51:08

标签: unit-testing mocking visual-studio-2012

VS11中的新Fakes框架允许您在单元测试项目中创建程序集引用的伪(模拟或存根)实现。当程序集伪造时,VS11会为每个伪造生成两个文件:

/FakesAssemblies/[Project].Fakes.dll
/FakesAssemblies/[Project].Fakes.xml

是否应将这些文件添加到源代码管理中?我的假设是否定的,因为它们是自动生成的,但是想知道是否有人有其他意见。

2 个答案:

答案 0 :(得分:5)

自动生成不应该是存储库中存在的区别因素。毕竟,各种自动生成的文件经常出现在那里 - 例如设计器文件。

问题是,一直产生额外的假货装配可能是耗时的。 Microsoft发布guidelines有关如何尝试优化该内容的信息:

  

Fakes程序集的编译可以显着增加您的构建时间。您可以通过在单独的集中项目中生成.NET系统程序集和第三方程序集的Fakes程序集来最小化构建时间。由于此类程序集很少在您的计算机上更改,因此您可以在其他项目中重用生成的Fakes程序集。

因此,很少改变,基于.NET FCL /第三方的假组件应该是存储库的一部分,以加快构建过程。基于您自己的代码的那些可能是最好的动态生成。

答案 1 :(得分:1)

根据http://hamidshahid.blogspot.com.au/2012/11/microsoft-fakes-framework.html

  

生成“FakesAssemblies”文件夹及其中的所有文件   无论什么时候编译项目。这很重要,因为如果你是   添加假货以便为变化的组件组装,生成   FakesAssemblies将确保所有更改都反映在   生成装配。

同样in GitHub it is recommended在.gitignore中排除它们

# Microsoft Fakes
FakesAssemblies

如果您在构建期间担心生成时间,则只能指定所需内容和disable stubs

mscorlib.fakes:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" Version="4.0.0.0" />
  <StubGeneration Disable="true"/>
  <ShimGeneration>
    <Clear />
    <Add FullName="System.Environment"/>
    <Add FullName="System.TimeZoneInfo"/>
    <Add FullName="System.DateTime"/>
  </ShimGeneration>
</Fakes>
System.fakes:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="System" Version="4.0.0.0"/>
  <StubGeneration Disable="true" /> 
  <ShimGeneration Disable="true" /> 
</Fakes>