Android 我应该在片段中对每个方法进行单元测试吗?

Android 我应该在片段中对每个方法进行单元测试吗?,android,android-fragments,android-espresso,android-testing,Android,Android Fragments,Android Espresso,Android Testing,在过去的一年里,我编写了一个Android应用程序,根本没有进行任何自动测试。我现在正在学习用Android进行测试,但我仍然有一些问题似乎无法在网上找到答案 我已经对我的演示者进行了单元测试,因为他们不使用任何Android类,所以编写这些测试非常简单 我还使用Espresso为我的视图(片段)编写了一些UI测试,我也觉得自己掌握得很好 我真正不明白的是,我是否也应该为片段中的所有方法编写单元测试?UI测试检查可以完成的所有可能的用户交互。但我的片段仍然有一些基本方法,这些方法是在presen

在过去的一年里,我编写了一个Android应用程序,根本没有进行任何自动测试。我现在正在学习用Android进行测试,但我仍然有一些问题似乎无法在网上找到答案

我已经对我的演示者进行了单元测试,因为他们不使用任何Android类,所以编写这些测试非常简单

我还使用Espresso为我的视图(片段)编写了一些UI测试,我也觉得自己掌握得很好

我真正不明白的是,我是否也应该为片段中的所有方法编写单元测试?UI测试检查可以完成的所有可能的用户交互。但我的片段仍然有一些基本方法,这些方法是在presenter从模型中获取一些数据之后从presenter调用的。我的片段中的这些方法非常简单,它们从presenter获取数据,并使用它填充视图或切换可见性或类似的内容。我应该为这些类型的方法编写单元测试吗?它们看起来很简单,但我想确保我完全理解Android测试


谢谢

你的问题是关于测试覆盖率的。如果您想涵盖更多的代码,您应该使用模拟工具为每个方法甚至片段方法编写测试。

单元测试通常对琐碎的方法毫无意义。如果您有一个方法可以无条件地在一个项目上设置一个可见标志,那么真正需要测试的是什么


单元测试您的模型和演示者应该涵盖大多数潜在的bug。我不会太担心您的视图,尤其是因为您已经在做UI测试了。您可能希望编写测试来覆盖多次出现的bug,但除此之外,您最好将时间花在其他地方。

UI测试总是非常脆弱的。有一次,我的老板打电话给我,询问ui测试失败的原因。最后,这是因为testdevice不再通过usb连接到testserver

此外,ui测试需要花费大量时间来运行。所以你必须考虑你想要实现什么?您什么时候运行测试?您希望在哪里运行测试

哪里?要么使用某种设备实验室,要么在资金紧张的情况下在每次创建的无头模拟器上运行测试

什么?想想大局。功能您已经在单元测试中介绍了演示者的逻辑,现在请尝试介绍视图中的流

什么时候?如果您有一个大的测试套件,运行它可能需要几个小时。在一些公司,甚至在几天内。将整个测试套件安排为夜间构建。但请确保添加一组简化的测试,这是每次提交后要运行的产品的绝对核心