Глава 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

youtube.com/watch?v=7hFivbgIEqk

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

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