Testo. Фильры
Фильтры нужны для того, чтобы сузить множество запускаемых тестов. Иначе говоря, это возможность сделать выборку по тестам перед их запуском.
Добавление фильтров является одним из важных пунктов на пути к версии 1.0.0
Теперь с гордостью можно сказать, что этот пункт закрыт. Фильтры поддерживаются на уровне фреймворка и на уровне плагина.
Система фильтрации в Testo многослойная.
1. Test Suite (флаг --suite) — глобальный уровень. Лучше сразу обозначить, что мы запускаем Unit тест и лезть в Acceptance не нужно. Это срежет большой пласт работы для следующего уровня.
2. Путь до файла (флаг --path) — отрабатывает на уровне Finder'а, когда просто сканируется структура папок и файлов. Поддерживает wildcards (звёздочки, вопросики и т.д.).
3. Токенизация. Файлы, прошедшие предыдущие фильтры начинают читаться и разбиваться на токены.
По этим токенам ищутся имена функций, методов и классов. Это ещё не исполнение файла и рефлексия здесь недоступна, но мы уже можем понять, есть ли в этих файлах тесты.
На этом этапе отрабатывает фильтр по имени теста или тест-кейса (в CLI флаг --filter).
Можно указать короткое имя функции, метода, класса или вместе (`UserTest::testCreate`), либо FQN (полное имя) функции/класса/метода.
4. После токенизации файлы выполняются пыхой, чтобы мы могли работать с рефлексией.
На уровне рефлексии система фильтров выполняет последние действия: не пропускает дальше те тесты или кейсы, которые не подходят под фильтр по имени.
Фильтры можно комбинировать.
Однотипные фильтры комбинируются оператором ИЛИ, разнотипные оператором И.
Например:
- если указать только два файла, то выполнятся оба, т.к. пройдут по критерию (Файл1 ИЛИ Файл2)
- если указать путь до файла и имя `simpleTest`, то выполнится только simpleTest из указанного файла.
Плагин
На стороне плагина теперь можно кликнуть на тест-кейс, на тест или на файл и запустить только выбранное. А ещё Дима добавил сокрытие ненужных стек-трейсов под спойлер. Выглядит офигенно и очень удобно.
testo
opensource
php