Рабочая тетрадь(4)
.pdfТесты можно считать хорошими, если их:
Легко научиться писать
Легко написать
Легко прочитать
Легко выполнить
Быстро выполняются
Поддерживается изолированность
Поддерживается комбинируемость
Ограничения:
Легкость обучения написанию тестов противоречит легкости написания
Изолированность противоречит скорости выполнения
echo
print_r
var_dump
var_export
assert
assert_options(ASSERT_ACTIVE, 1); assert_options(ASSERT_WARNING, 0); assert_options(ASSERT_QUIET_EVAL, 1);
function my_assert_handler($file, $line, $code){ echo "Assertion Failed:<br />
File '$file'<br /> Line '$line'<br /> Code '$code'<hr />";
}
assert_options(ASSERT_CALLBACK, 'my_assert_handler');
assert('mysql_query("")');
Модульное тестирование
англ. unit testing
процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы
Поощрение изменений
Упрощение интеграции
Документирование кода
Отделение интерфейса от реализации
PhpUnit
http://www.phpunit.de
Установка
pear remote-info phpunit
pear channel-discover pear.phpunit.de
pear remote-list -c phpunit
pear install phpunit/PHPunit
require_once 'PHPUnit/Framework.php';
class MyClassTest extends
PHPUnit_Framework_TestCase{
public function testMyFunction(){
$this->assertEquals($val1, $val2){}
$this->assertTrue($val){}
$this->assertFalse($val){}
phpunit test-file.php
require_once 'PHPUnit/Framework.php';
class MyClassTest extends
PHPUnit_Framework_TestCase{
public function testOne(){}
/**
* @depends testOne */
public function testTwo(){}
/**
*@dataProvider provider
*/
public function testFoo($a, $b){}
public function provider(){ return array(
array(1, 1), array(1, 2), array(2, 3), array(3, 4),
);
}
setUpBeforeClass()
tearDownAfterClass()
setUp()
tearDown()
assertPreConditions()
assertPostConditions()
onNotSuccessfulTest()
<dataset>
<table name="post">
▪<column>post_id</column>
▪<row>
▪<value>1</value>
▪</row>
</table>