-
Notifications
You must be signed in to change notification settings - Fork 1
Singleton config for tests #306
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Singleton config for tests #306
Conversation
add validation connection and topics for kafka container
на самом деле подобная фишка уже в магисте использовалась. были тесты на DslQuery с аннотацией |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Выигрыш в 2+ раза по скорости – лайк. Интересное использование @Transactional
, не сталкивался раньше с таким.
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
@Slf4j | ||
public abstract class AbstractKafkaSingletonContainerConfig extends AbstractDbSingletonContainerConfig { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
На этом месте становится совсем тяжко. Абстрактный кафка-конфиг, который наследуется от абстрактного дб-конфига и который является родителем для абстратного кафка-и-дао-конфига, который порождает, собственно, тест.
Для меня шансы разобраться как работает (или почему не работает) тест в такой ситуации околонулевые. Я бы подумал над тем, как уйти от наследования в тестах совсем. Кажется, что оно сильно усложняет тестовые классы и лишает их одной из основных функций – простого и понятного документирования кода.
Можно посмотреть в сторону явного подключения конфиг-бинов в тестовый класс или что-то такое.
Можно в целом отказаться от абстрактных классов и наследования и в сетапе теста создавать нужные инстансы для теста. Например, если надо поднять PG и kafka, то
и далее работать уже с этими инстансами (если надо) |
лично мне кажется лучше пожертвовать скоростью ради чистоты прохождения тестов. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Согласен с Сашей, такое наследование выглядит тяжеловато для восприятия, чтобы сразу въехать как писать тесты.
Мб стоит вынести в отдельный стартер тестовые конфиги под различные кейсы - бд, кафка и тд.
И подключать как вариант через анноташки.
Я вроде видел задачку в бэклоге на выработку подхода и унифицирование тестов. Это как раз выглядит как ее реализация.
Поресёрчил в контексте переиспользования контейнеров непосредственно в рамках функционала testcontainers - там разработчики by design сделали так, чтобы подобная фича могла нормально работать только на локальной машине (требуется создавать конфигурацию в home-директории, что заставляет создавать файлы на всех серверах, где будут гонятся подобные тесты). Основная причина - в таком режиме контейнеры могут не вырубиться и продолжить "висеть" после прохождения всех тестов. |
круто, конечно, хоть я не все уловил, на самом деле, что там имелось ввиду. это может быть использовано в кейсах, когда мы создаем в рамках конфига контейнер, например, через возможно это лучше, чем если по теме, то контейнеры реализуют интерфейс |
чистота поддерживается аннотацией |
* add usage 'testcontainers-annotations:1.0.0' artifact
немного переосмыслил в #308 архитектуру |
* add implementation * add usage 'testcontainers-annotations:1.0.0' artifact (#306) * create singletons containers * add create topic by adminClient logic * add validation connection and topics for kafka container * refactor test configs and test lifecycle (#308) * remove invoiceId from migration (#307) * add InvoiceTemplateServiceTest
* JD-378: New payouts processing * Saving payout_tool_id * Upd proto * Added test, bump service-parent-pom * Bump service-parent-pom * Fix test, removed duplicated test * Fix test * Fix after review * Fix test * bump pg-embedded-plugin * actualize topice name for payouts (#303) * Added statPayout changes * Revert "JD-265: add allocation" (#304) * Revert "JD-265: add allocation (#298)" This reverts commit 7809393. * bump deps * Fixes * Added allocation script * Fix test * Fix test * Fix readme * Fix after review * JD-449: invoice-template saved handler impl (#305) * add implementation * add usage 'testcontainers-annotations:1.0.0' artifact (#306) * create singletons containers * add create topic by adminClient logic * add validation connection and topics for kafka container * refactor test configs and test lifecycle (#308) * remove invoiceId from migration (#307) * add InvoiceTemplateServiceTest * bacl allocation migration, fix order (#309) * return old KafkaConfig for invoicing topic (#311) * return MachineEventDeserializer (#312) * delete MachineEventDeserializer (#313) * JD-536: remove exception logic in handling (#314) allow skip and rewrite at duplicate events * merging actual master (#315) * Upd damsel * JD-378: New payouts processing (#302) * JD-378: New payouts processing * Saving payout_tool_id * Upd proto * Added test, bump service-parent-pom * Bump service-parent-pom * Fix test, removed duplicated test * Fix test * Fix after review * Fix test * bump pg-embedded-plugin * actualize topice name for payouts (#303) * Added statPayout changes * Added allocation script * Fix test * Fix test * Fix readme * Fix after review * merging actual master (#315) * Upd damsel * Upd service-parent-pom Co-authored-by: karleowne <karleowne@gmail.com> Co-authored-by: Anatoly Karlov <a.karlov@rbkmoney.com> * Remove payouter polling (#317) * WIP. Allocations restored from split branch * WIP.Refunds and payments stat now contains allocations * Saving externalId implemented * Tests updated with allocations, junit5 additional migration * Null checkout of payout type (#320) * bump deps, remove junit4 (#318) * add coverage for tests on payout search handler (#321) * Ft/fix filters (#323) * Fix filters * Fix filters * Added test * Fix test * Changed mapper's scheme to handlers (#324) * Update damsel version * Static import added * Remove redundant files after merge * Empty files removed * Empty file removed * Collect moved to new line * Feedback edits Co-authored-by: inallyoung <in.all.young@gmail.com> Co-authored-by: karleowne <karleowne@gmail.com> Co-authored-by: Anatoly Karlov <a.karlov@rbkmoney.com> Co-authored-by: e.chernyak <e.chernyak@rbkmoney.com>
разве не прекрасно?

было
стало
