【发布时间】:2017-04-21 04:30:23
【问题描述】:
对私有方法进行单元测试可能不是好的做法,但产品中很少有方法在私有方法中具有复杂的登录。
我们能否以某种方式反映或调用 android 中的 roboletric 中的私有方法或任何类似于 roboletric 的有助于测试私有方法的库?
任何提示或帮助将不胜感激
【问题讨论】:
标签: android robolectric
对私有方法进行单元测试可能不是好的做法,但产品中很少有方法在私有方法中具有复杂的登录。
我们能否以某种方式反映或调用 android 中的 roboletric 中的私有方法或任何类似于 roboletric 的有助于测试私有方法的库?
任何提示或帮助将不胜感激
【问题讨论】:
标签: android robolectric
对私有方法进行单元测试可能不是一个好习惯,但产品中很少有方法在私有方法中具有复杂的登录。
最好的解决方案是从复杂的逻辑中提取一个类。那么你提取的类就可以单独测试了。
我们能否在 Android 中以某种方式反映或调用 Roboletric 中的私有方法?
如果您必须使用反射来测试您的私有方法,那么 Robolectric 中的过程与使用反射的标准 JUnit 测试中的过程完全相同:
Method method = targetClass.getDeclaredMethod(methodName, argClasses);
method.setAccessible(true);
return method.invoke(targetObject, argObjects);
或任何类似于 Roboletric 的库,有助于测试私有方法?
与其学习有助于打破良好软件工程原则的库,不如学习像 Dagger 2 这样的依赖注入框架。这样的 DI 框架将帮助您构建更小、具有更强封装、更可测试的类。这样一开始你就不会有私有方法来测试的问题。
this question 的答案中有一些工具链接可帮助测试私有方法
【讨论】: