【问题标题】:Unit test private methods in roboletric androidrobolectric android中的单元测试私有方法
【发布时间】:2017-04-21 04:30:23
【问题描述】:

对私有方法进行单元测试可能不是好的做法,但产品中很少有方法在私有方法中具有复杂的登录。

我们能否以某种方式反映或调用 android 中的 roboletric 中的私有方法或任何类似于 roboletric 的有助于测试私有方法的库?

任何提示或帮助将不胜感激

【问题讨论】:

    标签: android robolectric


    【解决方案1】:

    对私有方法进行单元测试可能不是一个好习惯,但产品中很少有方法在私有方法中具有复杂的登录。

    最好的解决方案是从复杂的逻辑中提取一个类。那么你提取的类就可以单独测试了。

    我们能否在 Android 中以某种方式反映或调用 Roboletric 中的私有方法?

    如果您必须使用反射来测试您的私有方法,那么 Robolectric 中的过程与使用反射的标准 JUnit 测试中的过程完全相同:

    Method method = targetClass.getDeclaredMethod(methodName, argClasses);
    method.setAccessible(true);
    return method.invoke(targetObject, argObjects);
    

    或任何类似于 Roboletric 的库,有助于测试私有方法?

    与其学习有助于打破良好软件工程原则的库,不如学习像 Dagger 2 这样的依赖注入框架。这样的 DI 框架将帮助您构建更小、具有更强封装、更可测试的类。这样一开始你就不会有私有方法来测试的问题。

    this question 的答案中有一些工具链接可帮助测试私有方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多