2012-10-03 119 views
1

我刚刚从Nuget中获得了NUnit,NUnit Runners和OpenCover。 NUnit部件在GUI和控制台模式下都运行良好。但在PowerShell中,我似乎无法让OpenCover正常工作。以下使用的各种例子,我结束了这个命令:OpenCover没有将参数传递给NUnit

.\OpenCover.Console.exe -register:user -target:"..\NUnit.Runners.2.6.1\tools\nunit-console.exe" -targetargs:"/noshadow C:\Path\To\Tests.dll" -filter:+[*]* -output:coverage.xml 

我看到NUnit的开放版权的信息,但随后NUnit的告诉我:

fatal error: no inputs specified

其次,当然,通过标准的帮助输出描述标志和什么。然后,OpenCover自然也会显示一个错误,指出没有任何内容与过滤器匹配,并且没有结果。

于是,我就直接运行NUnit的:

..\NUnit.Runners.2.6.1\tools\nunit-console.exe /noshadow C:\Path\To\Tests.dll 

而且运行良好。测试通过,一切都很开心。想,也许文档和例子是过时的,我试过targetargs组合直接进入调用:

.\OpenCover.Console.exe -register:user -target:"..\NUnit.Runners.2.6.1\tools\nunit-console.exe /noshadow C:\Path\To\Tests.dll" -filter:+[*]* -output:coverage.xml 

但错误输出仍然是相同的。

我错过了正确使用OpenCover的东西吗?我如何才能正确地与NUnit控制台运行器交互?

+1

你可以尝试没有“/ noshadow”参数? –

+0

@HenryAloni:有趣。在非'targetargs'尝试没有'/ noshadow'尝试没有区别。但是,如果我再次分离'targetargs'并从该尝试中移除'/ noshadow',则NUnit成功运行测试。但是,OpenCover仍然报告“没有与提供的过滤器相匹配的程序集进行检测,这可能是由于缺少匹配过滤器的程序集的PDB”。然而,在输出bin中有PDB文件,我将它指向测试DLL。 – David

+0

看起来像opencover带有错误的参数。你可以尝试把它自己的qoutes中的每个参数:OpenCover.Console.exe“-target:.. \ NUnit.Runners.2.6.1 \ tools \ nunit-console.exe”-output:。\ test.xml“ - targetargs:MyApp.Merchant.nunit/noshadow“ –

回答

0

难道是先设置当前工作目录吗?

我也有我的引号过滤参数,例如, -filter:"+[*]*"

可能是价值至少排除这些了......

+0

有趣的是,它看起来像工作目录可能是罪魁祸首。如果我出去找一些随机目录,并且对所有东西都使用绝对路径(在我的例子中,我使用OpenCover可执行文件和NUnit可执行文件的相对路径),那么我会得到相同的结果。但是,导航到编译输出文件夹的测试程序集,并再次使用绝对路径的一切似乎工作。所以当我自动化这个时,我应该能够使用'Set-Location'作为脚本的第一行。希望。 – David