android - 如何在 Android 上有效地测试多线程、多进程、多设备代码?
问题描述
我编写了一个 Android 无线通信库,它本质上是多线程、多进程和(当然)多设备的。
Android 世界中是否有针对这种性质的代码的有效测试库/框架?
- 由于显而易见的原因,很难对多线程代码进行单元测试。单元测试不能很好地处理线程。(例如)如何对需要等待广播的函数进行单元测试?
- 大多数错误似乎仅限于“现实世界”。该库需要两个设备才能相互通信。如果我模拟一个完美的响应序列,那感觉就像在作弊。与现实世界不同,任何事情都不会出错。此外,模拟过程既复杂又耗时——我编写的模拟代码比在实际库中要多得多。
- Android 上的所有测试框架,无论是 Instrumented 还是其他,一次只针对一台设备。我不能同时在两台设备上同时运行相互依赖的测试,可以吗?
我目前只有系统级测试,而且主要是 Ad hoc。它只是一个带有简单控制器脚本的常规应用程序,它将应用程序推送到两个设备,分配它们的角色,运行高级功能测试,并在两个设备上轮询日志文件。如果在写入日志文件之前达到超时,脚本将返回错误代码。如果日志被写入,则检查通信序列的正确性。理论上,该测试可以添加到 CI 中,但它需要从具有物理连接设备的本地测试机器上运行。随着时间的推移,我可以使这个测试更加健壮,但现在它非常脆弱。同样,我为这个特定的项目做了它。
我不确定我在这里的方法。Android 生态系统中是否有任何现有工具可以帮助我测试此类项目?任何建议或推动正确方向将不胜感激。
解决方案
推荐阅读
- python - 将张量转换为 numpy 数组时出现值错误
- excel - excel visual basic中是否有任何功能可以查找没有空白行的列范围?
- c++ - c ++是否可以在不基于其基类的派生类中创建构造函数?
- python - pytest:测试数据库约束
- angular - 如何在可重用表中使用 matSort?
- javascript - 在javascript中分离一个嵌套数组?
- php - 在服务提供商中添加邮件配置在 laravel 7.0 中不起作用,它给出了不支持的邮件传输错误
- javascript - 使用 Firebase Emulator Suite 进行测试时,如何在 Firebase Cloud Functions 中使用 Jest 模拟函数?
- javascript - 为动态对象插入代理 localStorage
- regression - 如何在Stata中按“今天”导出回归模型结果和标签?