Selenium 测试的代码覆盖率

Code Coverage of a Selenium Test

我已经通过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 打开并完成了所有必要的步骤。但是一旦完成我就会得到 "Visisted Classes 0 of 309"

我试过添加

-searchdirs:"C:\myApp\Main\MainWebProject\bin"

但它仍然没有覆盖。

我错过了什么?

OpenCover 仅覆盖由目标进程及其子进程加载和执行的 .net 程序集。

我怀疑您的 Web 应用程序未 运行ning 在该上下文中,因此即使您的测试 运行ning OpenCover 实际上并未分析该代码。因此,您需要 运行 您的 Web 应用程序处于相同的上下文中 - 我建议为此使用 iisexpress。

现在您可能正在考虑测试程序集,为什么您没有很好地覆盖这些程序集应该尝试将 /noshadow 选项与 nunit-console 一起使用。

好的,我做到了 运行。 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