Перейти к содержимому

Фотография

вообще не запускаются тесты phpunit


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 15

#1 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 02 ноября 2011 - 13:32

Здравствуйте! тут появилась проблема такая:
устанавливала phpunit на windows xp (до этого использовала все только под линуксом).
так вот после установки никакие тесты запускаться не хотят.
при попытке запуска простейшего теста просто ничего не происходит:
- в netBeans, пишет: Возможно произошла ошибка. Более подробная информация в окне вывода. И когда переходишь в окно вывода, то там пусто.
- а если запускать через консоль, то после команды:
phpunit "путь к файлу теста\файл_теста.php"
просто пустая строка выводится и приглашение на ввод следующей команды.

кто-нибудь встречался с таким? помогите разобраться с проблемой....
  • 0

#2 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 02 ноября 2011 - 14:37

Попробуй слэши экранировать:
phpunit "путь к файлу теста\\файл_теста.php"

  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#3 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 03 ноября 2011 - 05:19

не помогло. также не выполняется. такое чувство что phpunit вообще не работает, хотя установлен и версию выводит...
если это чем нибудь поможет то связка настроена так:
pear version 1.9.4
php version 5.3.8
zend engine 2.3.0
phpunit version 3.6.0
windows xp

устанавливала вот по этой инструкции http://automated-tes...elenium-phpunit
и при установке была такая проблема:
после установки php и pear, когда подключила и обновила все каналы, набрала команду
pear install phpunit/PHPUnit
и после этого появилась ошибка, что для установки phpunit требуется pear installer версии 1.9.4, а была установлена версия 1.9.0 и обновляться не хотела никак (при попытке обновления писал, что версия новейшая и обновлять нечего). Обновила с помощью команды force. после этого phpunit установился, но отказывается работать.

может эта информация поможет?
  • 0

#4 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 03 ноября 2011 - 06:47

сейчас пробовала установить на другом компе тоже с windows xp.
Там установка прошла гладко, без всяких ошибок, однако тесты все также не работают.
В Переменных средах я прописала все пути, которые необходимы были
C:\php\; C:\php\PEAR\; C:\php\PEAR\PHPUnit\;
Но не помогает.
Может это надо приписать где то в php.ini?

прописала в php.ini путь C:\php\PEAR\;
также не помогло.
netBeans отказывается воспроизводить тест, выводит сообщение: Возможно произошла ошибка, перейдите в диалоговое окно "Вывод".
при этом окно Вывод остается пустым...

Сообщение отредактировал Jenka156: 03 ноября 2011 - 08:29

  • 0

#5 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 03 ноября 2011 - 12:20

сегодня целый день сидела,устанавливала разные версии, думала что проблема в несовместимости. однако оказалось нет.
php и pear установлены правильно (причем интересно то, что при обновлении pear, установщик ругался на часовой пояс: вроде как у меня неверный часовой пояс указан. должно быть +3 часа, а у меня +4).
С этой проблемой разобралась. все установила и обновила правильно.
Затем попробовала установить phpunit руками. в phpunit.bat прописала все нужные пути к php.exe и phpunit.php
Результат: phpunit просто отказывается работать!

я испробовала уже все возможные способы.
помогите пожалуйста...

Прикрепленные файлы

  • Прикрепленный файл  phpunit.JPG   29,52К   21 Количество загрузок:

  • 0

#6 sawoy

sawoy

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Alex Savchuk

Отправлено 07 ноября 2011 - 08:43

Привет.

Сначала проверьте, что в указанном файле нет синтаксических ошибок:
php -l <path-to-php-test-file>

Затем попробуйте запустить phpunit в debug режиме, к примеру так:
phpunit --syntax-check --verbose --debug -d display_errors=On -d display_startup_errors=On -d error_reporting=E_ALL <path-to-php-test-file>
  • 0

#7 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 07 ноября 2011 - 08:58

вот такой результат: в файле ошибок нет, но тест все так же не запустился. сразу же выдает приглашение на ввод следующей команды

Прикрепленные файлы

  • Прикрепленный файл  qqqqq.JPG   37,22К   17 Количество загрузок:

  • 0

#8 islmv

islmv

    Новый участник

  • Members
  • Pip
  • 4 сообщений


Отправлено 07 ноября 2011 - 11:36

Попробуйте из консоли воспроизвести тест с оф.документации по phpunit:
Example 17.1: Usage example for PHPUnit_Extensions_SeleniumTestCase
Но советую также добавить в require_once следующие php-файлы:
require_once ('PHPUnit/Autoload.php');
require_once ('PHPUnit/Extensions/SeleniumTestCase/Driver.php');
У вас, как я вижу, стоит версия 3.6.0, а в ней уже имеются существенные различия от версий 3.5.х
Также советую удостовериться, что у вас установлен пакет из канала channel://pear.php.net/Testing_Selenium-0.4.3
  • 1

#9 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 08 ноября 2011 - 06:40

спасибо большое! после 500 раза переустановки все заработало наконец то)))

только теперь вот такой косяк появился:
При успешном выполнении теста все хорошо проходит: пишет что тест выполнен, время прохождения.

Но если тест провален, то он не выводит никаких результатов. Даже браузер не закрывает.
И в браузере там, где показывается код, тест заканчивается на методе getLocation().
Если создавать лог файл с помощью опции --log-junit, то при неудачном тесте он создается, но остается пустым

я когда то слышала о такой ошибке. это связано, на сколько я знаю, с методом onNotSuccessfulTest() в SeleniumTestCase.php.
Но что именно делать с этим я понятия не имею. Может кто нибудь встречался с таким?

а еще если элемент отсутствует на странице, то тест продолжает выполняться, делая следующие дейсвия

Прикрепленные файлы

  • Прикрепленный файл  qq.JPG   132,27К   11 Количество загрузок:

Сообщение отредактировал Jenka156: 08 ноября 2011 - 08:06

  • 0

#10 islmv

islmv

    Новый участник

  • Members
  • Pip
  • 4 сообщений


Отправлено 08 ноября 2011 - 08:18

я когда то слышала о такой ошибке. это связано, на сколько я знаю, с методом onNotSuccessfulTest() в SeleniumTestCase.php.
Но что именно делать с этим я понятия не имею. Может кто нибудь встречался с таким?

В последней версии phpunit метод выглядит следующим образом:
protected function onNotSuccessfulTest(Exception $e)
    {
        if ($e instanceof PHPUnit_Framework_ExpectationFailedException) {
            $buffer = 'Current URL: ' . $this->drivers[0]->getLocation() .
                       "\n";
            $message = $e->getComparisonFailure()->toString();

            if ($this->captureScreenshotOnFailure &&
                !empty($this->screenshotPath) &&
                !empty($this->screenshotUrl)) {
                $this->drivers[0]->captureEntirePageScreenshot(
                  $this->screenshotPath . DIRECTORY_SEPARATOR . $this->testId .
                  '.png'
                );

                $buffer .= 'Screenshot: ' . $this->screenshotUrl . '/' .
                           $this->testId . ".png\n";
            }
        }

        try {
            $this->stop();
        }

        catch (RuntimeException $e) {
        }

        if ($e instanceof PHPUnit_Framework_ExpectationFailedException) {
            if (!empty($message)) {
                $buffer .= "\n" . $message;
            }

            $e->setCustomMessage($buffer);
        }

        throw $e;
    }
}
Обратите внимание на строчку:
$message = $e->getComparisonFailure()->toString();

если у вас не так, советую исправить.

Далее у вас может выйти ошибка связанная со строчкой
$e->setCustomMessage($buffer);
Метод setCustomMessage() убран из последней версии (Этот баг надеюсь исправят со следующим релизом). Он должен находится в файле PHPUnit/Framework/ExpectationFailedException.php.
Так что советую скачать этот файл из версии 3.5.х и заменить им текущий файл.
  • 0

#11 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 08 ноября 2011 - 08:49

+
  • 0

#12 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 08 ноября 2011 - 08:49

строка $message = $e->getComparisonFailure()->toString(); была написана правильно.
файл ExpectationFailedException.php заменила, однако результата никакого это не дало...

нашла такую закономерность:
- если встречается в тесте assertion и оно не выполняется, то тест прерывается, но не выводит никаких ошибок (хотя должен писать, например, assertion:true is false)
- если в тесте происходит какое либо действие с элементом, которого не существует на странице(например нажимает на кнопку), то тест продолжает выполняться дальше... типа он нажал на кнопку... хотя должен вывести ошибку, что элемента не существует на странице
  • 0

#13 islmv

islmv

    Новый участник

  • Members
  • Pip
  • 4 сообщений


Отправлено 09 ноября 2011 - 07:12

- если встречается в тесте assertion и оно не выполняется, то тест прерывается, но не выводит никаких ошибок (хотя должен писать, например, assertion:true is false)

Приведите пример файла теста полностью, от начала до конца.
  • 0

#14 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 09 ноября 2011 - 08:50

Вот тот тест, который я пробую запускать. он элементарный, но не работает. phpunit типа нажимает на кнопку, которой нет и продолжает выполнять код дальше, проверять найденные значения
<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
require_once 'PHPUnit/Autoload.php';
require_once 'PHPUnit/Extensions/SeleniumTestCase/Driver.php';

class GoogleTest extends PHPUnit_Extensions_SeleniumTestCase
{

    function setUp()
    {
        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://google.ru");
        $this->setTimeout(600000);
    }

    function testGoogle()
    {
        $this->open("/");
        $this->type("q", "selenium");
        $this->clickAt("//input[text()='Поиск в ГУГЛ']"); // этой кнопки нет на странице
        sleep(3);
        $this->assertTrue($this->isTextPresent("selenium"));
    }
}
?>

  • 0

#15 islmv

islmv

    Новый участник

  • Members
  • Pip
  • 4 сообщений


Отправлено 10 ноября 2011 - 06:43

Попробуйте вместо sleep(3) использовать $this->setSleep(3);
И вместо clickAt() просто click(), потому что в первом варианте там еще нужно указать координаты в качестве аргумента.
  • 0

#16 LarianVonLich

LarianVonLich

    Новый участник

  • Members
  • Pip
  • 46 сообщений


Отправлено 06 декабря 2011 - 09:51

ну так что помогло?
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных