Jef*_*rod 5 testing android unit-testing scala proguard
由于Android上的Scala问题,我最近需要在Android上推出ProGuard.我需要ProGuard的缩小功能,它可以删除假定未使用的类.我非常关心删除类对可测试性的影响.
就目前而言,我编写了在主机上运行的单元测试和在Android平台上运行完全集成的应用程序的验收测试.
通常情况下,我会对相对完整的单元测试覆盖率和不稳定的验收测试覆盖率感到满意.但是,鉴于在我的代码中我大量使用Guice依赖注入,到目前为止,我的经验是ProGuard以一种我难以预测的方式删除代码.因此,它很可能会导致我引入错误.
这让我相信我需要编写完全覆盖的接受/平台测试,因为在任何时候,都可能缺少类.
其他人有这种经历吗?如果是这样,您的测试策略是什么?或者凭借经验,您是否更加确信ProGuard正在删除的课程真的不需要?
ProGuard 不会破坏您的应用程序,直到它尝试在已删除的类和/或混淆的成员上使用反射或 Class#forName。
根据我的经验(Android 上也有混淆的 Scala),使用简单的冒烟测试很容易发现 ProGuard 对 Android 应用程序造成的问题。您知道项目中包含哪些库。如果其中一些使用反射或 Class#forName - 对它们执行冒烟测试。然后从 ProGuard 配置中排除必要的类/成员。
还请记住,您可以使用ActivityInstrumentationTestCase2和模拟器自动测试混淆的项目。如果您计划在项目中使用 ProGuard,请始终对混淆的 APK 执行仪器测试。
总之——不要害怕。相对而言,与 ProGuard 相关的问题很容易发现。
| 归档时间: | 
 | 
| 查看次数: | 950 次 | 
| 最近记录: |