тесты?
Задача: есть внешний компонент-сервер, с ним взаимодействие через grpc. Хочу написать тестовый клиент, который будет осуществлять подключения и гонять разные сценарии. При этом я хочу пользоваться фикстурами и параметрическими тестами.
На плюсах я бы просто заюзал гуглотесты. На расте встроенный фреймворк тестовый вроде не очень подходит: он заточен будто бы на тестирование именно внутренностей, а не на интеграционные тесты.
Создаёшь директорию tests/ в корне и кладёшь туда тесты, по одному тесту в файл
и эти тесты будут запускаться как обычно cargo test?
Которые лежат в tests — да
вот именно такой подход мне и кажется странным потому что cargo test - он же идейно вроде как прогоняет тесты для текущего проекта а у меня по сути мой проект на расте и есть один большой набор тестов я хочу чтобы у меня просто запускался бинарь как обычно а сам бинарь внутри себя прогонит все сценарии на текущий момент я бы написал в условном tests.rs кучу методов (один метод - один сценарий) и в main по очереди бы их дернул, это выполняет мою задачу но в таких условиях мне придется самому изобретать фикстуры и вот это вот все я верю, что есть какой-то общепринятый фреймворк для этого
Фикстур в встроенном тестовом фреймворке нет вообще. Запустить тесты без интеграционных — cargo t --lib. Что ты хочешь в целом я понял слабо.
и правда наверное мутно объяснил, давайте попробую полностью описать задачу есть некий абстрактный сервер, он написан не на расте (в моем случае на питоне) к этому серверу обращаются клиенты, в моем случае через rpc - чего хочется сделать: написать клиент на расте, который будет дергать методы сервера по rpc в разных сценариях, таким образом тестируя сервер по сути это будет интеграционное тестирование - как я могу это сделать: написать на расте набор функций, каждая из которых будет реализовывать какой-то сценарий доступа к серверу. в main дернуть все ф-ции по очереди - чем мне не нравится такой подход: было бы удобно и "органично" использовать такие примитивы как фикстура и параметризованные тесты. переизобретать их в своем коде не хочется. однако, такие примитивы будто бы предлагают только фреймворки для юнит- тестирования (например rstest). юнит тестирование предполагает, что я написал какой-то код на расте и хочу к нему написать тесты - это не моя ситуация
По моему с точки зрения фреймворков для тестирования вообще нет ни какой разницы между юнит тестами или ещё каким-то. Фреймворки просто облегчают написание тестов, предоставляя всякие утилиты и функции полезные именно в контексте тестирования (например фикстуры, красивые отчёты и трейсбеки). Так что можете использовать эти фреймворки как угодно.
cucumber_rust глянь
выглядит как то, что нужно спасибо!
Обсуждают сегодня