Kotlin. Exhaustive when и полное покрытие кода тестами
Вставка
- Опубліковано 5 лют 2025
- Kotlin как язык требует, чтобы конструкция `when` (эквивалент switch)
была "насыщенной", полной (exhausitive) и соответственно мы иногда вынуждены добавлять `else` даже если по факту мы перебрали все известные варианты. И так как мы не можем реально попасть в этот бранч кода - он остается не покрытым тестами и страдает coverge.
В этом видео показан плохой, хороший и самый хороший вариант решения этой проблемы.
ИТАК ЕСЛИ ВЫ ЗНАЕТЕ В ЧЕМ ПРОБЛЕМА ПОКРЫТИЯ У НЕДОЗАКРЫТОГО when
МОЖЕТЕ МОТАТЬ ДО 19:02 !!! ЕСЛИ ХОТИТЕ ПОСМОТРЕТЬ ПЛОХОЕ РЕШЕНИЕ
ИЛИ СРАЗУ ДО 31:18 если хотите быстрого ответа
1. 01:04 знакомимся со средой в которой будем работать и что там к чему
2. 02:52 начинаем выполнять условное ТЗ
3. 07:00 собс твенно получили exhausitive when и разобрали его свойства и немного обсуждаем
(можно минуту промотать если понятно в чем смысл)
4. 08:15 логика продукта начинает усложняться и мы сначала пытаемся удержаться в виде простого when
5. 12:28 наконец поняли что просто плоской матрицы уже нет и начинаем делать логику на правилах
(можно промотать если понятно к чему идет)
6. 15:43 наконец поняли что просто when(action) уже не годится
(можно мотануть если понятно как пишется такой код)
7. 19:02 все мы дописали вроде все варианты кода, но kotlin требует else и происходит противоречие
exhusitive и покрытия кода
8. 21:30 разбираем самый плохой вариант, как он затаивается и потом выпрыгивает в проде
ЕСЛИ НЕ ИНТЕРЕСНО СМОТРЕТЬ ДО ЧЕГО ДОВОДИТ ПЛОХОЙ ВАРИАНТ МОЖНО МОТАНУТЬ ДО 31:18
9. 31:18 собственно summum bonum - делаем идеальный вариант!!!
#kotlin #coverage #when #unittesting
Спасибо за столь познавательные видео!
Отличное видео!
всегда говорил, что котлин придумали прогеры, которые оч хотели говнокодит на джаве, но им не давали)) почитайте про паттерн стратегия, в адекватном коде никакие свитчкейсы, when и прочие костыли не нужны, все решается баналной мапой и полиморфизмом
почему не в тёмной теме? как это смотреть теперь