c# - Microsoft Fakes 程序集名称冲突

标签 c# testing microsoft-fakes

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

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

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

最佳答案

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

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

关于c# - Microsoft Fakes 程序集名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47911428/

相关文章:

javascript - 如何从我的 testcafe 文件中的单独文件传递数据

c# - 繁重的计算分析/优化

c# - 更改 Gridview 页面后,Gridview 不会重新绑定(bind)数据

ruby-on-rails - 为什么 Rails 测试不能正常工作?

button - QTP - 获取按钮值

unit-testing - 如何在 C# 中使用 Microsoft Fakes 在接口(interface)中 stub 通用方法定义

c# - 带有 Microsoft Fakes 的 Stub 或 Shim Process 类

c# - 将 Winforms 中的标签调整到左侧

c# - C# 字符串相等比较中的 StringComparison.CurrentCultureIgnoreCase 有多昂贵?

c# - Microsoft Fakes x64 而不是 x86 和 v4.5