Как решить эту ошибку: «Класс PHPUnit_Extensions_SeleniumTestCase не найден» - PullRequest
13 голосов
/ 17 сентября 2008

Я пытаюсь запустить SeleniumTestCase с phpunit, но не могу запустить его с помощью скрипта phpunit.bat.

Моя цель - использовать phpunit с Selenium RC в CruiseControl и phpUnderControl. Вот как выглядит тест:

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class WebTest extends PHPUnit_Extensions_SeleniumTestCase
{
    protected function setUp()
    {
        $this->setBrowser('*firefox');
        $this->setBrowserUrl('http://www.example.com/');
    }

    public function testTitle()
    {
        $this->open('http://www.example.com/');
        $this->assertTitleEquals('Example Web Page');
    }
}

Я также получил PEAR в include_path и PHPUnit, установленных с расширением Selenium. Я установил их с помощью грушевого установщика, так что я думаю, что это не проблема.

Любая помощь будет принята с благодарностью.

Спасибо, Реми

Ответы [ 10 ]

16 голосов
/ 16 декабря 2010

надеюсь, это более точный ответ, чем приведенный здесь (который не решил мою проблему). Если вы получаете эту ошибку, проверьте папку PEAR и посмотрите, есть ли там файл «SeleniumTestCase.php»:

/PEAR/PHPUnit/Extensions/SeleniumTestCase.php

Если это не так, проще всего удалить и переустановить PHPUnit, используя PEAR ...

pear uninstall phpunit/PHPUnit

pear uninstall phpunit/PHPUnit_Selenium

pear install phpunit/PHPUnit

После выполнения вышеизложенного и единственной установки PHPUnit_Selenium также был автоматически установлен, я не уверен, что это типично, поэтому некоторые могут сделать ...

pear install phpunit/PHPUnit_Selenium

Также см. http://www.phpunit.de/manual/3.5/en/installation.html для получения информации о канале PEAR, если необходимо ...

6 голосов
/ 23 января 2009

Вот сделка:

Если у вас есть проблема «Class PHPUnit_Extensions_SeleniumTestCase не может быть найден в (имя файла testcase)», вы должны сделать следующие две вещи:

1. Переименуйте файл тестового набора в название класса, который он содержит 2. Вы должны запустить phpunit из папки с вашими тестами.

Это должно исправить вашу проблему.

Andrew

1 голос
/ 01 октября 2014

Попробуйте:

class WebTest extends \PHPUnit_Extensions_Selenium2TestCase

Это может быть проблема с пространством имен, как это было для меня.

1 голос
/ 30 января 2012

Вот как я решил эту проблему:

  1. Убедитесь, что расширение curl для php установлено, например, для Ubuntu sudo apt-get install php5-curl
  2. Введите sudo pear install phpunit/PHPUnit_Selenium

После этого у вас должен быть установлен отсутствующий файл

Счастливого кодирования ...

1 голос
/ 27 января 2010

Я обнаружил, что следующий пример из учебника PHPUnit работает, в то время как та же самая ошибка появилась в тесте, который я написал. Решение было неожиданным. Убедитесь, что ваш класс находится внутри блока <?php .. ?>, а не блока <? .. ?> в сценарии.

<?php
require_once 'PHPUnit/Framework.php';

class StackTest extends PHPUnit_Framework_TestCase
{
    public function testPushAndPop()
    {
        $stack = array();
        $this->assertEquals(0, count($stack));

        array_push($stack, 'foo');
        $this->assertEquals('foo', $stack[count($stack)-1]);
        $this->assertEquals(1, count($stack));

        $this->assertEquals('foo', array_pop($stack));
        $this->assertEquals(0, count($stack));
    }
}
?>
1 голос
/ 26 февраля 2009

Не предполагайте, что установка груши произошла без проблем.

Я установил phpunit через pear, но, несмотря на то, что установка прошла нормально, когда я заглянул в папку, у меня были все эти файлы, начиная с .tmp, например, PHPUnit / Util / .tmpErrorHandler.php, поэтому, естественно, когда я запускал тест в первый раз он дал мне ту же ошибку, что и выше. Проверив, что файла действительно нет, я вручную установил PHPUnit в ту же папку, что и pear, и увы, все было хорошо. Я в Mac / Leopard.

О Selenim RC не забудьте запустить его, запустив в терминале java -jar /path/to/file/selenium-server.jar

1 голос
/ 17 сентября 2008

Я только что переименовал файл, в котором находился мой тест, в «WebTest.php» (имя класса, который в нем содержится), и тест теперь работает нормально.

1 голос
/ 17 сентября 2008

Посмотрите на один из комментариев в записи require_once в руководстве по php.

http://ie.php.net/manual/en/function.require-once.php#62838

"require_once (и, в этом случае, include_once) медленный

Кроме того, если вы планируете использовать модульные тесты и фиктивные объекты (т.е. включать фиктивные классы до того, как реальные классы будут включены в класс, который вы хотите протестировать), он не будет работать, так как require () загружает файл, а не класс . "

0 голосов
/ 05 февраля 2014

При сбое не всегда выводятся самые подробные сообщения об ошибках.

Всегда не забывайте запускать Selenium до запуска теста.

java -jar selenium-server-standalone-2.39.0.jar

Вот пример кода, который работал для меня. http://www.siteconsortium.com/h/p1.php?id=php002. Очевидно, что существует множество разных способов написания набора тестов и запуска тестового примера, но я сначала использовал set_class_path, чтобы избавиться от проблем классов.

0 голосов
/ 08 января 2009

Хорошо, когда я использую встроенную команду: при запуске теста из PhPunit dir у меня возникает ошибка при запуске его из тестового каталога, я не вижу ошибки ...

но у меня до сих пор нет доступа к серверу селена ... должен ли я запускать его раньше или нет.

Если да, это странно, что мы не должны указывать дескриптор PhPUnit ...

...