我已经通过nuget安装了OpenCover。
这是我从命令提示符
运行的行C:\myapp\Main\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -target:"C:\Program Files (x86)\NUnit 2.6.4\bin\nunit-console.exe" -register:user -targetargs:"C:\myapp\Main\myapp.SeleniumTests\bin\Debug\myapp.seleniumTests.dll /result=c:\TestRunner\SeleniumResults.xml /include:Single"
我可以看到测试运行是因为FireFox打开并且它经历了所有必要的步骤。但是一旦完成,我得到了#309; Visisted Classes 0 of 309"
我尝试过添加
-searchdirs:"C:\myApp\Main\MainWebProject\bin"
但它仍然没有报道。
我错过了什么?
答案 0 :(得分:1)
OpenCover仅提供由目标进程及其子进程加载和执行的.net程序集的覆盖范围。
我怀疑您的Web应用程序没有在该上下文中运行,因此即使您的测试正在运行,OpenCover实际上并未对该代码进行概要分析。因此,您需要在相同的上下文中运行Web应用程序 - 我建议使用iisexpress。
现在你可能正在考虑测试程序集,为什么你不能很好地覆盖这些程序集应该尝试在nunit-console中使用/ noshadow选项。
答案 1 :(得分:0)
好的,我能够让它运行。关闭Visual Studio是非常重要的,如果没有,它将无法从iis express注册该站点
首先在控制台中我去
cd c:\MyApp\Main\MainWebProject\Bin
脚本出现了:
C:\MyApp\Main\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -target:"C:\Users\Me\Desktop\TestRunnerWithServer.bat" -register:user -searchdirs:"C:\MyApp\Main\MainWebProject\bin"
文件" TestRunnerWithServer.bat"有以下步骤
del "C:\TestRunner\TestResults.xml"
del "c:\TestRunner\SeleniumResults.xml"
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
rem go to the folder of the project with the unit tests
CD C:\MyApp\Main\MyTestsProject\bin\Debug
rem Run Unit Tests
MStest /testcontainer:MyTestsProject.dll /resultsfile:C:\TestRunner\TestResults.xml
rem now start IIS Express in a different window
cd C:\Program Files (x86)\IIS Express\
start iisexpress.exe /site:MainWebProject /config:C:\MyApp\Main\.vs\config\applicationhost.config
CD C:\Program Files (x86)\NUnit 2.6.4\bin
rem Run Selenium Tests
nunit-console C:\MyApp\Main\MyApp.SeleniumTests\bin\Debug\MyApp.seleniumTests.dll /result=c:\TestRunner\SeleniumResults.xml /noshadow
rem Close IISExpress
taskkill /IM iisexpress.exe