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