2016-06-23 7 views
2

Я изменяю чужую библиотеку с открытым исходным кодом, чтобы лучше соответствовать моим потребностям, и в этом процессе я понимаю, что сама библиотека довольно хрупка. У него нет тестов, и критические части его кода используют отражение, чтобы обойти уровни разрешений в Android SDK. Я признаю, что это плохая практика, но я согласен с оригинальным автором в этом случае, что некоторые части SDK, которые отмечены как частные, так и частные, должны быть защищены или публичными.Как я могу улучшить надежность отражения?

Например, один класс не делает ничего, кроме расширения стандартного пользовательского интерфейса Android, но предоставляет геттер и сеттер для цвета одного из его представлений, которые иначе не могут быть изменены.

Очевидно, что код, основанный на личном коде в чужой кодовой базе, по своей сути является хрупким, но я считаю, что я могу сделать несколько тестов для этого. Но единственное, что я могу придумать, это создать экземпляр, изменить цвет и посмотреть, не сработает ли он. Предполагая, что нет возможности делать то, что я хочу, не обращаясь к частным членам, что я могу сделать, чтобы сделать это более приемлемым?

ответ

1

Ничто не приходит на ум. Я бы добавил некоторые модульные тесты, которые выполняют конкретный код отражения, который вы хотите, и посмотрите, сбой или правильное поведение. Вы полагаетесь на намеренно hiddne impl детали 3-й партийной библиотеки - как вы говорите, это определение текстовой книги для катастрофы в какой-то момент. Таким образом, за пределами плана миграции с удалением этого кода ASAP я просто напишу модульные тесты, охватывающие весь затронутый код (хотя на самом деле большая часть вашего приложения должна быть охвачена модульными тестами уже, а интеграционные тесты для того, что вы не можете тестировать модулем)

Смежные вопросы