Установка и использование PHPUnit в Windows

Сначала устанавливаем PEAR.
Далее нужно зарегистрировать каналы

путь-к-php\pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com

Теперь можно установить PHPUnit

путь-к-php\pear install phpunit/PHPUnit

При этом может поругаться на версию PEAR. Надо обновить — см. заметку по установке PEAR.
Если не получилось установить с помощью PEAR.
После этого нужно писать тесты.
Подойдёт что-то вроде

ModelAdv.php

<?
//инициализация - можно вынести в отдельный файл
$_SERVER['HTTP_HOST'] = 'my_project';
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['QUERY_STRING'] = '';
//возникают ошибки, т.к. не все серверные переменные установлены
ini_set('display_errors','off');
error_reporting(E_ERROR);
require_once ('S:/wamp/www/moikompas/htdocs/init.php');
ini_set('display_errors','on');
error_reporting(E_ALL);

ini_set('include_path', ini_get('include_path') . ';путь-к-проекту;путь-к-PEAR;.');

require_once 'PHPUnit/Framework.php';

echo "--started--\n";

//--инициализация
/*
//это для тестирования контроллера - для задания всех его свойств
cfg::init('/groups/test/');

//здесь идёт передача управления контроллеру.
//вывод нам не нужен
ob_start();
require_once ('htdocs/index.php');
ob_clean();*/

//загружаем тестируемый класс (если нет автозагрузки)
load::c('adv');

//собственно сами тесты
class AdvTest extends PHPUnit_Framework_TestCase
{
	public function test_renderOpenxBannerOnPage()
	{
		$params =
			array
			(
				array
				(//всё правильно
					'in' 	=> array ('category' => 'biznes', 'place' => 'modules_top'),
					'out' 	=> array ('zoneid' => 74, 'n' => 'a1ebea39')
				),
				array
				(//всё правильно - вернуть умолчание
					'in' 	=> array ('category' => 'biznes', 'place' => 'modules_middle'),
					'out' 	=> array ('zoneid' => 2, 'n' => 'a159618f')
				),
				array
				(//неверная категория - вернуть умолчание
					'in' 	=> array ('category' => 'biznes1', 'place' => 'modules_top'),
					'out' 	=> array ('zoneid' => 73, 'n' => 'ae343b6d')
				),
				array
				(//неверное место показа - вернуть ''
					'in' 	=> array ('category' => 'biznes', 'place' => 'modules_to'),
					'out' 	=> ''
				),
				array
				(//неверная категория и место показа - вернуть ''
					'in' 	=> array ('category' => 'biznes12', 'place' => 'modules_to'),
					'out' 	=> ''
				),
			);
		foreach ($params as $par)
		{
			$out = adv::renderOpenxBannerOnPage($par['in']['category'], $par['in']['place'], true);
			$this->assertEquals($out, $par['out']);
		}
	}
	public function test_renderOpenxBannerByParams()
	{
		$params =
			array
			(
				array
				(//всё правильно
					'in' 	=> array ('bannerpage' => 'compas', 'place' => 'top', 'category' => 'biznes'),
					'out' 	=> array ('zoneid' => 45, 'n' => 'ae7d79d4')
				),
				array
				(//всё правильно
					'in' 	=> array ('bannerpage' => 'compas', 'place' => 'right', 'category' => 'razvlecheniya'),
					'out' 	=> array ('zoneid' => 29, 'n' => 'a14675ed')
				),
				array
				(//всё правильно
					'in' 	=> array ('bannerpage' => 'index', 'place' => 'right', 'category' => null),
					'out' 	=> array ('zoneid' => 7, 'n' => 'a2a070c5')
				),
				array
				(//всё правильно - вернуть умолчание
					'in' 	=> array ('bannerpage' => 'index', 'place' => 'top', 'category' => 'biznes'),
					'out' 	=> array ('zoneid' => 5, 'n' => 'abff2e70')
				),
				array
				(//страница компаса, неверная категория - вернуть умолчание
					'in' 	=> array ('bannerpage' => 'compas', 'place' => 'top', 'category' => ''),
					'out' 	=> array ('zoneid' => 44, 'n' => 'abf29464')
				),
				array
				(//неверное место показа - вернуть ''
					'in' 	=> array ('bannerpage' => 'index', 'place' => '', 'category' => 'biznes'),
					'out' 	=> ''
				),
			);
		foreach ($params as $par)
		{
			$out = adv::renderOpenxBannerByParams($par['in']['bannerpage'], $par['in']['place'], $par['in']['category'], true);
			//var_dump($out);
			$this->assertEquals($par['out'], $out);
		}
	}
}
?>

Запускать из папки с исполняемыми файлами php (где php.exe):

phpunit.bat путь-к-папке-tests\ModelAdv.php

А дальше — поехало: tdd, xp.

Ссылки по теме:
документация по установке,
документация по написанию тестов,
phpUnderControl (зачем?)

LEAVE A COMMENT