Глава 7. Организация тестов

  Одной из целей PHPUnit (см. Глава 2, Цели PHPUnit ) являются составные тесты: возможность запускать тест-кейсы в любом количестве и любой комбинации. Например, все тесты для проекта, тесты для всех классов компонента или же тест для определённого класса.

PHPUnit поддерживает разные пути комбинирования и составления тест-кейсов в тест-комплекты. Эта глава расскажет о наиболее распространённых подходах.

 Составление тест-комплекта, используя файловую систему

Скорее всего, самым простым способом составления тест-комплекта будет выделение всех исходных файлов тест-кейсов в отдельную директорию. PHPUnit может автоматически находить и запускать тест-кейсы при рекурсивном обходе директории с тестами.

Давайте взглянем на тест-комплект библиотеки Object_Freezer. Глядя на структуру директорий этого проекта, видно, что классы тест-кейсов находятся в директории Tests и отражают структуру иходных классов тестируемой библиотеки, которая находится в директории Object:

Object                              Tests
|-- Freezer                         |-- Freezer
|   |-- HashGenerator               |   |-- HashGenerator
|   |   `-- NonRecursiveSHA1.php    |   |   `-- NonRecursiveSHA1Test.php
|   |-- HashGenerator.php           |   |
|   |-- IdGenerator                 |   |-- IdGenerator
|   |   `-- UUID.php                |   |   `-- UUIDTest.php
|   |-- IdGenerator.php             |   |
|   |-- LazyProxy.php               |   |
|   |-- Storage                     |   |-- Storage
|   |   `-- CouchDB.php             |   |   `-- CouchDB
|   |                               |   |       |-- WithLazyLoadTest.php
|   |                               |   |       `-- WithoutLazyLoadTest.php
|   |-- Storage.php                 |   |-- StorageTest.php
|   `-- Util.php                    |   `-- UtilTest.php
`-- Freezer.php                     `-- FreezerTest.php

Для запуска всех тестов библиотеки с помощью PHPUnit необходимо указать директорию в которой хранятся все тесты библиотеки:

phpunit Tests
PHPUnit 3.7.0 by Sebastian Bergmann.

............................................................ 60 / 75
...............

Time: 0 seconds

OK (75 tests, 164 assertions)

Примечание

Если PHPUnit указать директорию, то утилита будет искать файлы с маской *Test.php.

Для запуска тест-кейса, объявленного в классе Object_FreezerTest, который находится в файле Tests/FreezerTest.php, можно использовать команду:

phpunit Tests/FreezerTest
PHPUnit 3.7.0 by Sebastian Bergmann.

............................

Time: 0 seconds

OK (28 tests, 60 assertions)

Для более точного указания запускаемых тестов можно использовать параметр --filter:

phpunit --filter testFreezingAnObjectWorks Tests
PHPUnit 3.7.0 by Sebastian Bergmann.

.

Time: 0 seconds

OK (1 test, 2 assertions)

Примечание

Пожалуй, единственным минусом будет то что, при таком пододе, нельзя запускать тесnы в определённом порядке. Это может привести к проблемам в зависимых тестах (см. «Межтестовые зависимости»). Следующий раздел покажет как указать точный порядок выполнения тест-кейсов, используя файл настроек XML.

 Использование файла настроек XML для составления тест-комплектов

 

Также, для составления тест-комплектов, можно использовать файл настроек XML для PHPUnit (Приложение C, The XML Configuration File ). Пример 7.1, «Использование файла настроек XML для составления тест-комплектов» показывает элементарный пример, который добавит все классы с маской *Test, которые находятся в файлах *Test.php. При поиске тест-кейсов директория Tests обходится рекурсивно.

 

Пример 7.1. Использование файла настроек XML для составления тест-комплектов

<phpunit>
  <testsuites>
    <testsuite name="Object_Freezer">
      <directory>Tests</directory>
    </testsuite>
  </testsuites>
</phpunit>

Порядок, в котором будут выполнены тест-кейсы, можно указать следующим образом:

 

Пример 7.2. Использование файла настроек XML для составления тест-комплектов с указанием точного порядка выполнения тест-кейсов

<phpunit>
  <testsuites>
    <testsuite name="Object_Freezer">
      <file>Tests/Freezer/HashGenerator/NonRecursiveSHA1Test.php</file>
      <file>Tests/Freezer/IdGenerator/UUIDTest.php</file>
      <file>Tests/Freezer/UtilTest.php</file>
      <file>Tests/FreezerTest.php</file>
      <file>Tests/Freezer/StorageTest.php</file>
      <file>Tests/Freezer/Storage/CouchDB/WithLazyLoadTest.php</file>
      <file>Tests/Freezer/Storage/CouchDB/WithoutLazyLoadTest.php</file>
    </testsuite>
  </testsuites>
</phpunit>
Оцени публикацию:
  • 0,0
Оценили человек: 0

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » PHP »