我有 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/