首页 > 解决方案 > 如何在 Android 上有效地测试多线程、多进程、多设备代码?

问题描述

我编写了一个 Android 无线通信库,它本质上是多线程、多进程和(当然)多设备的。

Android 世界中是否有针对这种性质的代码的有效测试库/框架?

  1. 由于显而易见的原因,很难对多线程代码进行单元测试。单元测试不能很好地处理线程。(例如)如何对需要等待广播的函数进行单元测试?
  2. 大多数错误似乎仅限于“现实世界”。该库需要两个设备才能相互通信。如果我模拟一个完美的响应序列,那感觉就像在作弊。与现实世界不同,任何事情都不会出错。此外,模拟过程既复杂又耗时——我编写的模拟代码比在实际库中要多得多。
  3. Android 上的所有测试框架,无论是 Instrumented 还是其他,一次只针对一台设备。我不能同时在两台设备上同时运行相互依赖的测试,可以吗?

我目前只有系统级测试,而且主要是 Ad hoc。它只是一个带有简单控制器脚本的常规应用程序,它将应用程序推送到两个设备,分配它们的角色,运行高级功能测试,并在两个设备上轮询日志文件。如果在写入日志文件之前达到超时,脚本将返回错误代码。如果日志被写入,则检查通信序列的正确性。理论上,该测试可以添加到 CI 中,但它需要从具有物理连接设备的本地测试机器上运行。随着时间的推移,我可以使这个测试更加健壮,但现在它非常脆弱。同样,我为这个特定的项目做了它。

我不确定我在这里的方法。Android 生态系统中是否有任何现有工具可以帮助我测试此类项目?任何建议或推动正确方向将不胜感激。

标签: androidmultithreadingtestingprocessautomated-tests

解决方案


推荐阅读