硒测试的代码覆盖范围

时间:2016-04-13 18:51:16

标签: vb.net visual-studio selenium iis-express opencover

我已经通过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"

但它仍然没有报道。

我错过了什么?

2 个答案:

答案 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