Microsoft伪造程序集名称冲突

问题描述 投票:2回答:1

我有3个C#项目X,Y和Z.我有2个单元测试项目Xt测试项目X中的代码,Yt测试项目Y中的代码。项目Z是一个库项目,由项目X和Y引用。

在两个单元测试项目中,我为Z生成了一个Fakes程序集,这意味着它们都有自己的Z.Fakes.dll版本。所有DLL都输出到同一目录中。因为它们都创建了一个Z.Fakes.dll,所以在输出目录中会覆盖另一个,具体取决于构建顺序,这意味着一组单元测试失败,因为伪造和存根在伪装配中不存在。

假设我不能为每个单元测试项目设置不同的输出目录,并且不能将单元测试合并到单个单元测试项目中,我该如何避免这个Fakes程序集名称冲突?有没有办法生成一个Fakes Assembly并给它一个别名,例如Zx.Fakes.dll和Zy.Fakes.dll?

c# testing microsoft-fakes
1个回答
1
投票

我们处理它的方式是我们在解决方案中有一个单独的Fakes项目,您生成所有的假货,然后只需在该伪造项目的FakesAssemblies文件夹中添加dll。当您这样做时,您的解决方案参考结构应如下所示

Solution
- MyFakes
  - References
    - X
    - X.Fakes //Created via the right-click create Fake menu on X
    - Y
    - Y.Fakes //Created via the right-click create Fake menu on Y
    - Z
    - Z.Fakes //Created via the right-click create Fake menu on Z
- X.csproj
  - References
    - Z
- Xt.csproj
  - References
    - MyFakes //This is just for build order
    - X
    - ..\MyFakes\FakesAssemblies\X.Fakes.dll
    - Z
    - ..\MyFakes\FakesAssemblies\Z.Fakes.dll
- Y.csproj
  - References
    - Z
- Yt.csproj
  - References
    - MyFakes //This is just for build order
    - Y
    - ..\MyFakes\FakesAssemblies\Y.Fakes.dll
    - Z
    - ..\MyFakes\FakesAssemblies\Z.Fakes.dll
- Z.csproj
© www.soinside.com 2019 - 2024. All rights reserved.