2010-05-25 3 views
4

Я использую Eclipse EPIC IDE для написания некоторых скриптов Perl CGI, которые вызывают некоторые модули Perl, которые я также написал. EPIC IDE позволяет мне настроить Perl CGI «запустить конфигурацию», которая запускает мой сценарий CGI. И тогда у меня есть Selenium, и один из моих тестовых файлов модулей запускает некоторые команды Selenium для запуска моего скрипта cgi через его шаги. Но отчет о покрытии из теста Module :: Build dispatch 'testcover' не показывает, что какой-либо из моего кода модуля был выполнен. Это было выполнено с помощью моего скрипта cgi, но я думаю, что CGI-скрипт запускался вручную и не выполнялся непосредственно моим тестовым файлом, поэтому, возможно, именно поэтому покрытие не распознается. Есть ли способ сделать это правильно, чтобы я мог интегрировать Selenium и единичные тестовые файлы и покрытие кода как-нибудь?Как получить покрытие кода скрипта Perl CGI при выполнении Selenium?

+0

Я думаю, что я понял это - смотрите мое обновление в ответ – DVK

+1

+1 заставила меня выучить что-то новый И для использования Devel :: Cover :) – DVK

ответ

3

Я не знаком с Selenium или EPIC, но одно обходное решение (за исключением случаев, когда кто-то приходит с более естественным решением) состоит в том, чтобы просто включить «-MDevel :: Cover» в командную строку конфигурации запуска.

Хуже приходит к худшему, добавить некоторые условной логики в BEGIN {} блок, что - на основе некоторой переменной селеном среды - условно делает use Devel::Cover

UPDATE:

Должна быть обеспечена возможность подавить вывод из Devel :: Обложка с использованием -MDevel::Cover=-silent,1

$ perl5.8 -MDevel::Cover -e '{1;}' 
Devel::Cover 0.64: Collecting coverage data for branch, blah 
Selecting packages matching: 
Ignoring packages matching: 
blah, blah, blah 
---------------------------- ------ ------ ------ ------ ------ ------ ------ 
File       stmt bran cond sub pod time total 
---------------------------- ------ ------ ------ ------ ------ ------ ------ 
Total       n/a n/a n/a n/a n/a n/a n/a 
---------------------------- ------ ------ ------ ------ ------ ------ ------ 


$ perl5.8 -MDevel::Cover=-silent,1 -e '{1;}' 

$ 
+0

Я пробовал оба решения, и ни один из них не работал. Когда я помещаю -MDevel :: Cover в командную строку конфигурации запуска cgi, этот новый модуль сгенерировал некоторый текст в stdout, который исказил заголовок скрипта cgi. Когда я добавил использование Devel :: Cover в свой тестовый файл unit, который использует селен для реализации скрипта cgi, он дал мне похожие результаты, как я уже делал, начиная с Module :: Build dispatch testcover ... никакого охвата моего модуля, который я знаю скрипт cgi вызывает подпрограммы. –

+0

@ Kurt - Я не уверен, можно ли отключить DeOp :: Cover IO каким-то удобным способом, но я могу проверить ... – DVK

+1

@Kurt - попробуйте '-MDevel :: Cover = - slient', please – DVK