HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: kotest, test factories, фабрики тестов</p>
1 <p>Теги: kotest, test factories, фабрики тестов</p>
2 <p>Давайте представим, что нам в каждом тесте надо выполнять одинаковые действия для подготовки окружения: наполнять базу данных, очереди и конфигурацию на файловой системе. Разумеется, очень хочется сделать шаблон теста с понятным названием, возможно, даже с описанием в виде javadoc/kdoc, ну и несколькими аргументами, к примеру именем/паролем тестового пользователя. В Kotest данный подход называют<strong>Test Factories</strong>. Его использование позволит вам вставлять куски тестов в корневой тест.</p>
2 <p>Давайте представим, что нам в каждом тесте надо выполнять одинаковые действия для подготовки окружения: наполнять базу данных, очереди и конфигурацию на файловой системе. Разумеется, очень хочется сделать шаблон теста с понятным названием, возможно, даже с описанием в виде javadoc/kdoc, ну и несколькими аргументами, к примеру именем/паролем тестового пользователя. В Kotest данный подход называют<strong>Test Factories</strong>. Его использование позволит вам вставлять куски тестов в корневой тест.</p>
3 <p>Речь идет ни о о функциях, ни о методах, ни об абстракциях, а о параметризованных частях теста с такой же структурой, как и у основного теста, однако эти части можно использовать в нескольких местах кода.</p>
3 <p>Речь идет ни о о функциях, ни о методах, ни об абстракциях, а о параметризованных частях теста с такой же структурой, как и у основного теста, однако эти части можно использовать в нескольких местах кода.</p>
4 <p>При этом чрезвычайно важно не нарушать читабельность теста применением шаблонов. Рассмотрим основные рекомендации:</p>
4 <p>При этом чрезвычайно важно не нарушать читабельность теста применением шаблонов. Рассмотрим основные рекомендации:</p>
5 <ul><li>имя шаблона должно быть понятным, иметь описание, плюс также должно быть описание всех параметров;</li>
5 <ul><li>имя шаблона должно быть понятным, иметь описание, плюс также должно быть описание всех параметров;</li>
6 <li>шаблон должен выполнять лишь одну функцию, к примеру, настройку БД (вспоминаем принцип единственной ответственности);</li>
6 <li>шаблон должен выполнять лишь одну функцию, к примеру, настройку БД (вспоминаем принцип единственной ответственности);</li>
7 <li>шаблон должен быть описан в стиле BDD;</li>
7 <li>шаблон должен быть описан в стиле BDD;</li>
8 <li>нежелательно, чтобы шаблон был слишком абстрактным.</li>
8 <li>нежелательно, чтобы шаблон был слишком абстрактным.</li>
9 </ul><p>Что касается непосредственной реализации в Kotest, то давайте приведем пример кода с соответствующими пояснениями. Ниже -- 2 вида фабрик тестов:<strong>TestFactory</strong>и<strong>scope-функции</strong>:</p>
9 </ul><p>Что касается непосредственной реализации в Kotest, то давайте приведем пример кода с соответствующими пояснениями. Ниже -- 2 вида фабрик тестов:<strong>TestFactory</strong>и<strong>scope-функции</strong>:</p>
10 <p><em>По материалам https://habr.com/ru/company/nspk/blog/520380/.</em></p>
10 <p><em>По материалам https://habr.com/ru/company/nspk/blog/520380/.</em></p>
11  
11