尝试将Moles与NUnit一起使用.获取"Moles要求测试成为一个仪表化过程"

Set*_*eth 4 nunit moles

我试图在NUnit中使用moles并且收到以下错误"Moles要求测试是一个检测过程".我也在Visual Studio 2008中使用Visual NUnit来实现这一点.欢迎任何帮助.

sup*_*jos 10

这就是我为了让Moles与NUnit一起工作所做的:

  1. 抓取存档C:\Program Files (x86)\Microsoft Moles\Documentation\moles.samples.zipMoles解压缩解决方案文件夹.

  2. NUnit在Visual Studio(2008)中为Release 构建项目.

  3. 复制输出文件Microsoft.Moles.NUnit.dll,并Microsoft.Moles.NUnit.xml...\Moles\NUnit\bin\Release\C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\.我怀疑重新编译NUnit插件而不是使用来自下载和安装的插件的这一步是实际的解决点.

  4. 在VS测试项目中,确保添加对C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\Microsoft.Moles.NUnit.dll刚刚复制的引用.

  5. 在VS测试类中,使用[Moled]属性标记测试方法(这将需要using Microsoft.Moles.Framework.NUnit).作为替代方案,将其实现包装在一个using (MolesContext.Create()) { ... }块中(这将需要一个using Microsoft.Moles.Framework).

  6. 从命令行,使用以下命令通过moles runner调用NUnit测试运行器: "C:\Program Files (x86)\Microsoft Moles\bin\moles.runner.exe" "path\to\your\test\assembly.dll" /r:"C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\nunit-console.exe" /x86 /args:"/domain=None"

我发现[Moled]属性不适用于[TestCase(...)],它会将您带回到未经检测的错误场景.相反,该using (MolesContext.Create())块也适用于该情况.

一旦发现一切正常,您可以考虑在Visual Studio中运行moles runner作为外部工具.遵循Visual Studio中使用NUnit Console运行Moles中的说明,更新参数,如步骤6所示.

请注意,这是在Windows 7 64位机器上,NUnit 2.5.9,Microsoft Pex和Moles(x86)0.94.51006.1.考虑不同路径,版本等的实际文件夹.