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

时间:2016-02-11 03:24:34

标签: android unit-testing mockito

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

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

我尝试过Robolectric但由于未初始化的变量,它似乎会导致大量的NPE。代码库不是我的,并且使用了很多静态方法,因此调试它们将是最后的手段。

1 个答案:

答案 0 :(得分:2)

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

如果你想在没有Robolectric的情况下进行完整的单元测试,你可以使用gradle" test"模拟上下文和资源等内容。 target为运行时类路径添加可模拟的android基础结构类。您不需要第三方软件来执行此操作。但是,你的测试会在" Stubbed!" Android静态方法调用的消息。为避免这种情况,您必须将所有这些静态方法调用包装到一个对象中,然后在测试期间进行模拟。有点痛苦。