У меня проблемы с запуском автоматических тестов с Yii, PHPUnit и Selenium
Я установил Selenium и PHPUnit, и когда я запускаю phpunit. Я получаю эту ошибку:
Warning: include(PHPUnit_Extensions_Story_TestCase.php): failed to open stream: No such
file or directory in path_to/framework/YiiBase.php on line 427
Warning: include(): Failed opening 'PHPUnit_Extensions_Story_TestCase.php' for inclusion
(include_path='.:') in path_to/framework/YiiBase.php on line 427
PHPUnit_Extensions_Selenium2TestCase_WebDriverException: The path to the driver executable
must be set by the phantomjs.binary.path capability/system property/PATH variable; for more
information, see https://github.com/ariya/phantomjs/wiki. The latest version can be downloaded
from http://phantomjs.org/download.html
У меня Selenium RC работает в фоновом режиме. У меня также есть папка PHPunit внутри папки тестов с расширениями Story и selenium.
Мой код выглядит так
define('TEST_BASE_URL','http://some_local_url/');
class WebTestCase extends PHPUnit_Extensions_Selenium2TestCase
{
/**
* Sets up before each test method runs.
* This mainly sets the base URL for the test application.
*/
protected function setUp()
{
parent::setUp();
$this->setHost('localhost');
$this->setPort(4444);
$this->setBrowserUrl(TEST_BASE_URL);
}
}
class SiteTest extends WebTestCase
{
public function testIndex()
{
$this->open('');
$this->assertTextPresent('Welcome');
}
}
Оказывается, серверу Selenium нужны phantomjs (спасибо капитану, очевидно), чтобы работать правильно. Я просто поместил файл .jar сервера в ту же папку, что и бинарный файл phantomjs, после чего тесты работали правильно.
Похоже, вы не настроили путь к фреймворку в своем тестовом сценарии ввода (index-test.php
по умолчанию) правильно. Вы также должны установить свой конфигурационный файл здесь. Без этого ваши тесты будут работать с теми же настройками (базы данных, сеансы), что и ваше приложение.
Это содержание index-test.php
для демонстрационного блога: https://github.com/yiisoft/yii/blob/master/demos/blog/index-test.php
<?php
/**
* This is the bootstrap file for test application.
* This file should be removed when the application is deployed for production.
*/
// change the following paths if necessary
$yii=dirname(__FILE__).'/../../framework/yii.php';
$config=dirname(__FILE__).'/protected/config/test.php';
// remove the following line when in production mode
// defined('YII_DEBUG') or define('YII_DEBUG',true);
require_once($yii);
Yii::createWebApplication($config)->run();