当无法在项目中引用DLL时,如何让单元测试针对相应的DLL运行?

时间:2013-10-17 16:43:09

标签: visual-studio-2012 nunit resharper build-process

我为PowerShell版本(包括我们的持续集成)提供了以下“预构建事件”。它只是根据处理器体系结构将DLL移动到输出目录中。

if '$(PROCESSOR_ARCHITECTURE)'=='AMD64' (copy /y "$(ProjectDir)x64\sqlite3.dll" "$(OutDir)") 
if '$(PROCESSOR_ARCHITECTURE)'=='x86' (copy /y "$(ProjectDir)x86\sqlite3.dll" "$(OutDir)")
if '$(PROCESSOR_ARCHITEW6432)'=='AMD64' (copy /y "$(ProjectDir)x64\sqlite3.dll" "$(OutDir)")

我遇到的问题是我在IDE中运行Resharper Unit Tests。当我这样做时,Pre Build事件不会运行,因此所有依赖于sqlite3.dll的测试都会失败。

我需要做的是能够在Test Runner运行之前将相应的文件移动到输出目录中,或者确保Test Runner仅针对x86架构运行,我可以将相应的文件放在bin\debug文件夹并完成它。

我尝试过的事情:

  1. 我尝试将“Build Settings”设置为“Always Build”,但这对结果没有影响。似乎IDE中的构建不会运行预构建事件
  2. 我还尝试在[Resharper - >中设置默认平台架构。选项 - >工具 - >单元测试] - as per the docs,但不幸的是我的R#版本没有该选项(7.1.3)

1 个答案:

答案 0 :(得分:1)

您可以强制C#项目仅为32位,而ReSharper运行程序仅将其作为32位运行。这样,您可以将x86 dll放在bin \ debug文件夹中,它应该都可以正常工作。