如何提高反射的稳健性?

时间:2016-06-23 02:02:32

标签: java android

我正在修改其他人的开源库以更好地满足我的需求,并且在此过程中我意识到图书馆本身相当脆弱。它没有测试,其代码的关键部分使用反射来绕过Android SDK中的权限级别。我认为这是不好的做法,但我同意原作者在这种情况下,SDK的某些标记为私有或包私有的部分应该受到保护或公开。

例如,一个类除了扩展标准的Android UI类之外什么都不做,但为其中一个视图的颜色提供了一个getter和setter,否则无法更改。

显然,依赖私有代码的代码在其他人的代码库本身就很脆弱,但我认为我能做的最少就是为它编写一些测试。但我唯一能想到的是实例化它,改变颜色,看它是否崩溃。假设在没有访问私人成员的情况下没有办法做我想做的事情,我该怎样做才能让这更好用呢?

1 个答案:

答案 0 :(得分:1)

没有更多的想法。我会添加一些单元测试来运行你想要的特定反射代码,看看它是否崩溃/保持正确的行为。你依赖于故意隐藏第三方图书馆的细节 - 正如你所说的那样在某些时候对灾难的教科书定义。因此,除了提出尽快删除此代码的迁移计划之外,我只需编写涵盖所有受影响代码的单元测试(尽管实际上大多数应用程序已经应用于单元测试;并且集成测试用于您无法进行单元测试的内容)