Skip to content
...
Фильтры

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 из указанного файла.

Плагин

На стороне плагина теперь можно кликнуть на тест-кейс, на тест или на файл и запустить только выбранное. А ещё @xepozz добавил сокрытие ненужных стек-трейсов под спойлер. Выглядит офигенно и очень удобно.

Плагин в действии