Покрытие кода теста Selenium

Я установил OpenCover через Nuget.

Это строка, которую я запускаю из моей командной строки

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"

но все равно возвращается без покрытия.

Что мне не хватает?

2 ответа

Решение

Хорошо, я смог заставить его работать. Важно, чтобы 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

OpenCover обеспечивает только покрытие.net сборок, которые загружаются и выполняются целевым процессом и его дочерними процессами.

Я подозреваю, что ваше веб-приложение не работает в этом контексте, и, следовательно, даже если ваши тесты работают, OpenCover на самом деле не профилирует этот код. Поэтому вам нужно запустить ваше веб-приложение в том же контексте - я рекомендую использовать для этого iisexpress.

Теперь вы можете подумать о тестовых сборках, и почему вы недостаточно хорошо освещаете эти сборки, попробуйте использовать параметр / noshadow с nunit-console.

Другие вопросы по тегам