12

Я пытаюсь запустить SeleniumTestCase с phpunit, но я не могу заставить его работать с скриптом phpunit.bat.Как решить эту ошибку: «Класс PHPUnit_Extensions_SeleniumTestCase не найден»

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

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

Спасибо, Remy

+0

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

ответ

1

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

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

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

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

1

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

0

Ну, когда я использую встроенную команду: если lauching тест с PHPUnit режа я имею ошибку при whent запуска его из тестовой директории я havne't ошибку ...

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

Если Да, это странно, что мы havne't указать любой дескриптор PHPUnit ...

6

Вот сделка:

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

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

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

Эндрю

1

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

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

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

1

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

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

16

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

+0

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

+0

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

+0

Должен быть отмечен как правильный ответ. – schmunk

1

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

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

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

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

0

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

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

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

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

1

Try:

class WebTest extends \PHPUnit_Extensions_Selenium2TestCase 

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

+0

Это решение работало и для меня, благодаря тонне. –

Смежные вопросы