我有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?
我们处理它的方式是我们在解决方案中有一个单独的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