Нове бачення phpunit
Написав    Вівторок, 16 березня 2010, 15:39    PDF Друк e-mail
Розробник

Правильне написання тестів... це той досвід, що приходить з часом. Та завше можна пришвидшити навчання. Пропоную невеличкий екскурс в розробку тестів і певних можливостей phpunit якими я до цього часу некористувався...

Під час написання програмного забезпечення дуже часто потрібно призупинити розробку юніт теста і перейти до розробки іншого більш важливого теста, або тесту який буде обов'язковим для виконання перед поточним.

Для того, щоб помітити тест як незакінчений, викликаємо метод markTestIncomplete. Приклад:

<?php
require_once 'PHPUnit/Framework.php';
 
class SampleTest extends PHPUnit_Framework_TestCase
{
    public function testSomething()
    {
        // Optional: Test anything here, if you want.
        $this->assertTrue(TRUE, 'This should already work.');
 
        // Stop here and mark this test as incomplete.
        $this->markTestIncomplete(
          'This test has not been implemented yet.'
        );
    }
}
?>

Тепер, призупинивши розробку "теста Б" ми можемо реалізувати більш потрібний юніт "тест А" і сказати, що "тест Б" буде залежати від виконання "тесту А". Для вказання залежності тестів використовують синтаксис документації параметром @depends. Зауважу, що для коректної роботи потрібно щоб на початок винонання залежного тесту (тест Б) важливий "тест А" уже виконався, а також можна вказувати ланцюжок залежностей. Таким чином, якщо важливий тест не винонається, то залежний буде пропущеним. Приклад такого використання:

<?php
class DependencyFailureTest extends PHPUnit_Framework_TestCase
{
    public function testOne()
    {
        $this->assertTrue(FALSE);
    }
 
    /**
     * @depends testOne
     */
    public function testTwo()
    {
    }
}
?>

Хоча, можна не будувати ланцюжки залежностей тестів, а просто вказати причину по якій він буде зупинений і для цього в своєму тесті можна викликати метод markTestSkipped для зупинки:

<?php
require_once 'PHPUnit/Framework.php';
 
class DatabaseTest extends PHPUnit_Framework_TestCase
{
    protected function setUp()
    {
        if (!extension_loaded('mysqli')) {
            $this->markTestSkipped(
              'The MySQLi extension is not available.'
            );
        }
    }
 
    public function testConnection()
    {
        // ...
    }
}
?>

Останнє оновлення ( Вівторок, 23 березня 2010, 08:09 )
 

Відвідування

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterСьогодні167
mod_vvisit_counterВчора205
mod_vvisit_counterЗа цей тиждень726
mod_vvisit_counterЗа минулий тиждень1183
mod_vvisit_counterЦього місяця3465
mod_vvisit_counterПопереднього місяця5599
mod_vvisit_counterВсього699778

Кількість користувачів: 4
Ваш IP: 34.231.21.123
,
Сьогодні: лист. 19, 2019