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

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

Любая помощь будет очень высоко ценится.

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

по какой-либо причине я не могу найти PHPUnit_Extensions_SeleniumTestCase в /PEAR/PHPUnit/Extensions/SeleniumTestCase.php, разве это не должно быть там?

farinspace 16.12.2010 01:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
1
20 070
10

Ответы 10

Взгляните на один из комментариев в записи require_once в руководстве по php.

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

"require_once (и include_once, если на то пошло) медленный

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

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

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

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

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

Вот сделка:

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

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

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

Андрей

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

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

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

Я обнаружил, что следующий пример из учебника 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));
    }
}
?>

Также попробуйте установить флаг --syntax-check для PHPUnit в командной строке. В противном случае PHPUnit может молча игнорировать ошибки в вашей программе.

CruiZen 27.01.2010 15:04

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

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

Toby 26.01.2011 18:15

хорошо, что phpunit был удален, но теперь он говорит, что выпусков нет ... отлично

Neil McGuigan 10.02.2012 02:49

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

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

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

Удачного кодирования ...

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

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

Java -jar селен-сервер-автономный-2.39.0.jar

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

Пытаться:

class WebTest extends \PHPUnit_Extensions_Selenium2TestCase

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

Другие вопросы по теме