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