Как уже ранее писалось тестирование кода существенно упрощает его эксплуатацию. Я пишу на php, для тестирования использую phpunit.
PHPUnit — средство модульного тестирования веб-приложений, написанных на PHP.
Установка делается по мануалу (https://github.com/sebastianbergmann/phpunit/#php-archive-phar) в 3 команды:
$ wget https://phar.phpunit.de/phpunit.phar $ chmod +x phpunit.phar $ mv phpunit.phar /usr/local/bin/phpunit |
Если у вас возникла ошибка вида «PHP Fatal error: Class ‘PHPUnit_Framework_TestCase’ not found in«, то вам надо немного обновить код тестов:
For those arriving here after updating phpunit to version 6 released on 2017-02-03
(e.g. with composer), you may be getting this error because phpunit code is now
namespaced (check changelog). You will need to refactor things
like \PHPUnit_Framework_TestCase to \PHPUnit\Framework\TestCase
Для примера, ниже код, который проверяет наличие необходимых классов и процедур одного из моих проектов:
<?php class php7_compatibility extends \PHPUnit\Framework\TestCase { private $calculator; private $function_test = array( "imagecreatefromjpeg" => "php-gd", "mb_strtoupper" => "php-mbstring", "geoip_record_by_name" => "", "json_encode" => "php-pecl-json", "mb_strlen" => "", "mb_strtolower" => "" ); private $class_test = array( "Memcached" => "", "DomXPath" => "", "GearmanClient" => "", "ZipArchive" => "", ); protected function setUp() { # $this->calculator = new Calculator(); } protected function tearDown() { # $this->calculator = NULL; } public function testLoadFunction() { foreach ($this->function_test as $function_name => $function_packet) { $message = $function_name . ' не найдена. Необходим пакет ' . $function_packet; $this->assertTrue(function_exists($function_name), $message); } } public function testLoadClass() { foreach ($this->class_test as $class_name => $class_packet) { $message = $class_name . ' не установлен'; $this->assertTrue(class_exists($class_name), $message); } } } |
Даже такой простой тест, поможет в дальнейшем избежать проблем при миграциях, обновлениях или переходах между версиями ПО.