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





Взгляните на один из комментариев в записи 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 может молча игнорировать ошибки в вашей программе.
Надеюсь, это более окончательный ответ, чем приведенный здесь (который не решил мою проблему). Если вы получаете эту ошибку, проверьте папку 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.
хорошо, что phpunit был удален, но теперь он говорит, что выпусков нет ... отлично
Вот как я решил эту проблему:
sudo apt-get install php5-curlsudo 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
Это может быть проблема с пространством имен, как это было для меня.
по какой-либо причине я не могу найти PHPUnit_Extensions_SeleniumTestCase в /PEAR/PHPUnit/Extensions/SeleniumTestCase.php, разве это не должно быть там?