在过去的一年中,我编写了一个Android应用程序,完全没有进行任何自动化测试。我现在正在学习有关在Android中进行测试的知识,但仍然有一些问题似乎无法在线找到答案。
我已经对演示者进行了单元测试,由于他们不使用任何Android类,因此编写这些测试非常简单。
我还使用Espresso为我的视图(片段)编写了一些UI测试,我也觉得自己很擅长。
我不是很了解我是否也应该为我的Fragments中的所有方法编写单元测试? UI测试检查所有可能完成的用户交互。但是,我的Fragments仍然具有一些基本方法,当演示者从模型中获取一些数据后,这些方法便可以从演示者那里调用。我的Fragment中的这些方法非常简单,它们从演讲者那里获取数据,并使用它来填充视图或切换可见性或类似内容。我应该为这些类型的方法编写单元测试吗?它们看起来确实很简单,但是我想确保我完全理解Android测试。
谢谢!
答案 0 :(得分:2)
UI测试始终是非常脆弱的生物。我的老板曾经叫我检查一下ui测试失败的原因。最后是因为测试设备不再通过USB连接到测试服务器。
UI测试也需要大量时间才能运行。因此,您必须考虑要达到的目标?您什么时候进行测试?您想在哪里运行测试
在哪里?要么使用某种设备实验室,要么在每次创建的无头模拟器上进行严格的测试
什么?考虑一下全局。 功能您已经在单元测试中介绍了演示者的逻辑,现在尝试在视图中介绍流程
何时?如果您有大型测试套件,则可能需要几个小时才能运行。在一些公司甚至几天。将整个测试套件安排为每晚构建。但是请确保添加减少的测试集,产品的绝对核心将在每次提交后运行
答案 1 :(得分:1)
在琐碎的方法上,单元测试通常毫无意义。如果您有一种方法可以无条件地在商品上设置可见标记,那么到底要进行哪些测试?
对模型和演示者进行单元测试应涵盖大多数潜在的错误。我不会为您的视图担心,特别是因为您已经在进行UI测试。您可能希望编写测试来涵盖不止一次出现的错误,但除此之外,您的时间最好花在其他地方。
答案 2 :(得分:0)
您的问题与考试覆盖率有关。如果您想覆盖更多的代码,则应该使用模拟工具为每个方法甚至片段方法编写测试。