Мне нужно было недавно представить ProGuard на Android из-за проблем со Scala на Android. Мне нужна ProGuard для его функции сжатия, которая удаляет классы, которые предположительно не используются. Я очень обеспокоен влиянием удаления классов на тестируемость.
В настоящее время я пишу модульные тесты, которые выполняются на хосте, и приемочные тесты, которые запускают полностью интегрированное приложение на платформе Android.
Как правило, мне было бы удобно с относительно полным охватом модульных тестов и точечным приемочным тестированием. Однако, учитывая, что в моем коде я интенсивно использую внедрение зависимостей Guice, до сих пор у меня был опыт, что ProGuard удаляет код способом, который мне сложно предсказать. Из-за этого очень вероятно, что я буду вносить ошибки.
Это наводит меня на мысль, что мне нужно написать приемочные / платформенные тесты, которые обеспечат полное покрытие, потому что в любой момент может отсутствовать класс.
Есть ли у других такой опыт? Если да, то какова была ваша стратегия тестирования? Или с опытом вы становитесь более уверенными в том, что классы, которые удаляет ProGuard, действительно не нужны?