Покрытие кода теста 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.