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