Side Effect Injection, или Добродетельные костыли
Помните тот случай, когда вы случайно (или нет) отправили на продакшн кусочек кода, предназначенный только для теста? Или временно вставили крохотный if’чик, например, с Thread.sleep() или логированием для отладки? Знайте, вы не одиноки. Есть куча реальных задач, после решения которых на продакшн частенько уезжает тестовый/отладочный код, превращаясь там в бомбу замедленного действия, попутно преумножая тех.долг и пятно на карме разработчика.
В докладе мы по косточкам разберем подход Side Effect Injection, который позволит вам внедрять в тестируемое приложение почти любое поведение: задержки, заглушки, логирование, обход безопасности и т.д., но при этом не пачкать репозиторий грязными хаками и даже не пересобирать само приложение.
В ходе разбора полюбуемся вариантами компиляции Java-кода, расковыряем один кейс модификации байт-кода в JVM, препарируем формальную грамматику Java, а затем поиграем со всем этим на примере реального приложения.