我正在尝试使用带有NUnit的moles并且收到以下错误“Moles要求测试是一个检测过程”。我也在Visual Studio 2008中使用Visual NUnit来实现这一点。欢迎任何帮助。
答案 0 :(得分:10)
这就是我为了让Moles与NUnit一起工作所做的:
在C:\Program Files (x86)\Microsoft Moles\Documentation\moles.samples.zip
抓取存档并解压缩Moles
解决方案文件夹。
在Visual Studio(2008)中为Release构建NUnit
项目。
将输出文件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插件,而不是使用来自下载和放大器的插件。安装是实际的解决点。
在您的VS测试项目中,请务必添加对刚刚复制的C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\Microsoft.Moles.NUnit.dll
的引用。
在VS测试类中,使用[Moled]
属性标记测试方法(这需要using Microsoft.Moles.Framework.NUnit
)。作为替代方案,将其实现包装在using (MolesContext.Create()) { ... }
块中(这将需要using Microsoft.Moles.Framework
)。
从命令行,通过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作为外部工具。按照Running Moles using NUnit Console from Visual Studio中的说明操作,按照步骤6更新参数。
请注意,这是在Windows 7 64位机器上,NUnit 2.5.9,Microsoft Pex和Moles(x86)0.94.51006.1。考虑不同路径,版本等的实际文件夹。
答案 1 :(得分:1)
我正在使用Moles版本0.94.51023.0。
据我所知,您需要在测试方法中添加以下属性。我正在使用Visual Studio测试框架,不确定它是否与NUnit等相同。人
[HostType("Moles")]
我还读到你可以将[Moled]
属性添加到测试方法中,但这对我来说是不可用的,我没有考虑为什么,假设它是旧的文档 - 似乎和Moles在一起很多。
更新:根据Moles参考手册,pg。 26,测试方法的MoledAttribute是NUnit的方法。您必须将 Microsoft.Moles.NUnit.dll 程序集注册到NUnit,方法是将其复制到NUnit bin / addins 文件夹。
然后,您将[Moled]
属性添加到测试方法中。
[Test]
[Moled]
public void MyTest() {
...
}
否则,您将添加一个using块来包装测试方法,如下所示:
[Test]
public void MyTest() {
using (MolesContext()) {
...
}
}
答案 2 :(得分:1)
除了添加[HostType(“Moles”)]属性外,还需要使用moles runner包装测试运行器。例如:
moles.runner.exe MyAssembly.dll /r:nunit-console.exe
Moles runner可能位于 C:\ Program Files \ Microsoft Moles \ bin 中。如需使用,请执行:
moles.runner.exe help
答案 3 :(得分:1)
superjos具有最正确的答案,并且使用“连续测试”插件,您可以通过NUnit控制台运行程序使用Visual Studio运行Moles runner以及此批处理文件:
@echo off
rem Uses the Microsoft Moles runner and fires off the NUnit console runner so you can use Moles with NUnit.
rem This batch file is intended to be run from the Continuous Testing plugin in Visual Studio.
rem However, it can be used to run nunit tests from anyhere with Moles as long as the first parameter
rem is the assembly to be tested. All other parameters are passed to NUnit.
set ASSEMBLY=%1
set MOLESPATH="c:\Program Files\Microsoft Moles\bin\moles.runner.exe"
set NUNITPATH="C:\Program Files\NUnit 2.5.10\bin\net-2.0\nunit-console.exe"
shift
if [%ASSEMBLY%]==[] goto HelpScreen
if [%1]==[] goto RunAlone
if [%2]==[] goto RunParams1
if [%3]==[] goto RunParams2
if [%4]==[] goto RunParams3
if [%5]==[] goto RunParams4
if [%6]==[] goto RunParams5
if [%7]==[] goto RunParams6
if [%8]==[] goto RunParams7
if [%9]==[] goto RunParams8
goto RunParams9
:HelpScreen
echo "The parameters are the same as NUnit Console runner with the exception that:
echo " 1) Only one assembly is supported and it must come first"
echo " 2) Only 9 extra parameters may be specified"
echo
%NUNITPATH% /?
exit 1
:RunAlone
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY%
goto ExitRunner
:RunParams1
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1
goto ExitRunner
:RunParams2
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2
goto ExitRunner
:RunParams3
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3
goto ExitRunner
:RunParams4
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4
goto ExitRunner
:RunParams5
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5
goto ExitRunner
:RunParams6
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6
goto ExitRunner
:RunParams7
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7
goto ExitRunner
:RunParams8
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8
goto ExitRunner
:RunParams9
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8 /args:%9
goto ExitRunner
:ExitRunner
只需更新您的软件包版本的路径即可。如果您有时间更新它,也可以使用它从其他程序运行它。
答案 4 :(得分:0)
您无法在Visual Studio中使用NUnit运行MS Moles。您必须使用MSTest(Visual Studio单元测试)来执行此操作,或者您可以从命令行使用Moles运行NUnit测试。请参阅reference manual。
一种可能的替代方案:如果它符合您的需求,您可以使用Gallio自动化平台并排运行各种测试框架(在您的情况下为NUnit和MSTest)......
HTH! 托马斯