我已经通过nuget安装了OpenCover。
这是我从命令提示符运行的行
C:myappMainpackagesOpenCover.4.6.519toolsOpenCover.Console.exe -target:"C:Program Files (x86)NUnit 2.6.4binnunit-console.exe" -register:user -targetargs:"C:myappMainmyapp.SeleniumTestsbinDebugmyapp.seleniumTests.dll /result=c:TestRunnerSeleniumResults.xml /include:Single"
我可以看到,测试之所以运行,是因为FireFox打开了它,它完成了所有必要的步骤。但一旦它完成,我得到了"访问类309"
我已经尝试添加
-searchdirs:"C:myAppMainMainWebProjectbin"
但它仍然没有得到任何报道。
我错过了什么?
OpenCover只提供由目标进程及其子进程加载和执行的.net程序集的覆盖范围。
我怀疑您的web应用程序没有在该上下文中运行,因此,即使您的测试正在运行OpenCover,它实际上也没有分析该代码。因此,您需要在相同的上下文中运行您的web应用程序——我建议使用iisexpress。
现在您可能正在考虑测试程序集,为什么没有很好地覆盖这些程序集?应该尝试在nunit控制台中使用/noshadow选项。
好的,我可以让它运行了。关闭Visual Studio是很重要的,否则它将无法从iis-express 注册网站
首先在控制台中,我转到
cd c:MyAppMainMainWebProjectBin
脚本出来了:
C:MyAppMainpackagesOpenCover.4.6.519toolsOpenCover.Console.exe -target:"C:UsersMeDesktopTestRunnerWithServer.bat" -register:user -searchdirs:"C:MyAppMainMainWebProjectbin"
文件"TestRunnerWithServer.bat"包含以下步骤
del "C:TestRunnerTestResults.xml"
del "c:TestRunnerSeleniumResults.xml"
call "C:Program Files (x86)Microsoft Visual Studio 10.0VCvcvarsall.bat" x86
rem go to the folder of the project with the unit tests
CD C:MyAppMainMyTestsProjectbinDebug
rem Run Unit Tests
MStest /testcontainer:MyTestsProject.dll /resultsfile:C:TestRunnerTestResults.xml
rem now start IIS Express in a different window
cd C:Program Files (x86)IIS Express
start iisexpress.exe /site:MainWebProject /config:C:MyAppMain.vsconfigapplicationhost.config
CD C:Program Files (x86)NUnit 2.6.4bin
rem Run Selenium Tests
nunit-console C:MyAppMainMyApp.SeleniumTestsbinDebugMyApp.seleniumTests.dll /result=c:TestRunnerSeleniumResults.xml /noshadow
rem Close IISExpress
taskkill /IM iisexpress.exe