Подтвердить что ты не робот

Как решить эту ошибку: "Класс PHPUnit_Extensions_SeleniumTestCase не найден"

Я пытаюсь запустить SeleniumTestCase с phpunit, но я не могу заставить его работать с phpunit.bat script.

Моя цель - использовать 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. Я установил их с установкой груши, поэтому я думаю, что это не проблема.

Любая помощь будет очень оценена.

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

4b9b3361

Ответ 1

Мы надеемся, что это более окончательный ответ, чем те, которые приведены здесь (что не помогло мне решить проблему). Если вы получаете эту ошибку, проверьте свою папку 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, если это необходимо...

Ответ 2

Вот сделка:

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

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

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

Эндрю

Ответ 3

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

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

"require_once (и include_once для этого важно) медленнее

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

<?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));
    }
}
?>

Ответ 7

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

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

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

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

Ответ 8

Try:

class WebTest extends \PHPUnit_Extensions_Selenium2TestCase

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

Ответ 9

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

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

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

Ответ 10

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

Всегда помните, чтобы запустить Selenium еще до запуска теста.

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

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