繁体   English   中英

如何使用Android库对私有方法进行本地单元测试?

[英]How to local unit test private methods using Android library?

我有一个公开方法,正在单元测试中。 该方法在类中调用几个私有方法。 问题是一些私有方法使用了诸如getString()和Html.fromHtml()之类的Android资源。

我知道如何使用Mockito模拟诸如Context.class之类的对象,但是如何模拟不公开访问的对象?

我尝试了Robolectric,但由于未初始化的变量,它似乎导致大量NPE。 代码库不是我的,它使用许多静态方法,因此调试它们将是不得已的方法。

可悲的是,不可能模拟静态方法,例如Html.fromHtml()甚至日志方法,例如Log.d()。 您依靠Robolectric通过为您提供实现来帮助您。

如果您想在没有Robolectric的情况下进行完全正确的单元测试,则可以使用gradle“ test”目标模拟诸如Context和Resources之类的东西,该目标向您的运行时类路径添加了可模拟的android基础设施类。 您不需要第三方软件即可执行此操作。 但是,您的测试将因“已存根!”而崩溃。 Android静态方法调用的提示信息。 为了避免这种情况,您必须将所有这些静态方法调用包装到一个对象中,然后在测试过程中对其进行模拟。 有点痛苦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM