Test framework for Picodata plugin
Описание
Picotest - это фреймворк для тестирования плагинов, созданных в окружении pike.
Для использования Picotest требуется выполнить следующие действия:
- Установить pike:
- Добавить зависимости
picotestиrstestвCargo.tomlплагина:
Совместимость с Picodata
Picotest поддерживает версии Picodata, начиная с 25.1.1 и выше.
Интеграционное тестирование
Макрос #[picotest] используется для написания интеграционных тестов и может применяться как к функциям, так и к модулям.
Атрибуты макроса #[picotest]
Макрос #[picotest] поддерживает следующие аргументы:
- path - путь до директории плагина. Значение по умолчанию:
$(pwd). - timeout - длительность ожидания после развертывания кластера и перед запуском тестов. Указывается в секундах. Значение по умолчанию: 0 секунд.
Использование #[picotest] на функциях
При использовании макроса на функциях, picotest будет создавать кластер при каждом запуске очередного теста и удалять кластер по завершению теста.
use picotest;
use rstest;
Использование #[picotest] на модулях
При использовании макроса на модуле picotest автоматически пометит все функции, названия которых начинаются с test_, как rstest-функции. Кластер будет создан один раз и удален после выполнения всех тестов в модуле.
use picotest;
Совместимость с rstest
Макрос #[picotest] является оберткой над rstest, поэтому поддерживает использование fixture.
use picotest;
Запуск тестов
Запустите тесты с использованием переменной RUST_TEST_THREADS=1:
RUST_TEST_THREADS=1
наличие переменной RUST_TEST_THREADS=1 необходимо только в том случае, если вы используете несколько модулей или функций с макросом #[picotest].
Пользовательские хуки
Picotest поддерживает работу с хуками before_all и after_all
Для использования добавьте в свой Cargo.toml файл:
[]
= "0.2.2"
Пример:
use picotest;
use ;
Создание кластера вручную
Picotest позволяет создавать и удалять кластер без использования макроса #[picotest].
use rstest;
Ограничения
- Параллельное исполнение тестов не поддерживается. Тесты должны запускаться последовательно, т.е. с переменной окружения
RUST_TEST_THREADS=1(issue #2)
Модульное тестирование
Макрос #[picotest_unit] используется для написания юнит-тестов для плагинов, созданных с помощью утилиты pike.
Запуск тестов
Тесты запускаются через интерфейс cargo test с использованием переменной RUST_TEST_THREADS=1:
RUST_TEST_THREADS=1
или опцией --test-threads=1:
Ограничения
#[picotest_unit]не может использоваться в модуле под#[cfg(test)].
Пример неверного использования макроса:
Пример верного использования макроса:
По скольку каждый юнит-тест компилируется и линкуется в динамическую библиотеку плагина (см. Структура плагина), он не должен быть задан в конфигурации, отличной от debug. В противном случае при сборке тестов они будут проигнорированы компилятором.
#[picotest_unit]не может использоваться совместно с другими атрибутами.
Все атрибуты используемые совместно с макросом будут отброшены.
В примере ниже #[should_panic] будет отброшен в процессе компиляции.
- Параллельное исполнение тестов не поддерживается. Тесты должны запускаться последовательно, т.е. с переменной окружения
RUST_TEST_THREADS=1(issue #2)