Метафора пакета TESTS_RUNNER. Дерево тестов

Главная идея заключается в том, что все тесты располагаются в едином дереве, где к каждому элементу можно добраться при помощи унифицированного пути(к примеру, /0/1 или /1/0/3).

Физически все тесты хранятся в файловой системе, причем, каждая отдельная директория с тестами считается группой, т.е нетерминальным нодом дерева. Терминальным нодом считается просто файл, у который по маске подходит под «*_test.php» или «*Test.class.php»(маска жестко не зашита и может меняться).

Только на стадии выполнения происходит сборка дерева, причем собирается оно не полностью, а только то, что необходимо, т.е те элементы, которые присутствуют в пути.

Группа тестов может иметь «распределенную фикстуру», которая будет выполняться иеархически(см. ниже). Фикстуры хранятся в отдельных php файлах .setup.php и teardown.php для отдельной группы тестов(т.е. внутри директории).

К примеру, есть тестовая группа foo, в которой, в свою очередь, находится группа bar. Если есть фикстура для обоих груп, при выполнении группы bar будут выполнены фикстуры в следующем порядке:

foo/.setup.php
  bar/.setup.php
  bar/.teardown.php
foo/.teardown.php

То что при выполнении дочерней группы выполняются фикстуры родителя(т.е фикстуры вкладываются друг в друга снизу вверх), является еще одной особенностью тестовой среды.