gpt4 book ai didi

Android Instrumentation 测试离线案例

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:43 24 4
gpt4 key购买 nike

对于我的仪器测试,我使用 Robotium。大多数情况下,我能够测试除离线案例之外的所有内容。

一旦我禁用数据(在模拟器中使用 adb、F8 快捷方式等...),测试就会断开连接。它在设备/模拟器中继续,但没有报告任何结果。

所以,我有了一个想法,只将应用程序置于离线模式,而不是将整个设备置于离线模式。问题是我不知道如何...

使用 iptablesApi 我需要对我的设备进行 root。我读过Mobiwol应用程序使用某种 VPN 来限制应用程序互联网访问,而无需对设备进行 root。

问题Mobiwol如何应用程序阻止每个应用程序的互联网连接?或者还有其他方法可以离线测试 apks 吗?

编辑 2014 年 12 月 30 日

我忘了说我可以离线运行测试,但我必须在设备处于离线状态时开始测试。目前,我将测试分为离线和在线测试。运行 ONLINEs 后,我执行著名的 adb kill-serveradb start-server。之后我执行离线。

最佳答案

只是提出一些建议,因为这里似乎有不同的问题。1) 如果您只想在运行 OFFLINE 测试用例之前关闭数据,您可能只想尝试使用 robotium 本身来这样做。

例子:对于 WiFi:

WifiManager wifi=(WifiManager)solo.getCurrentActivity().getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(false);

对于移动数据(使用反射):

ConnectivityManager dataManager=(ConnectivityManager)solo.getCurrentActivity().getSystemService(Context.CONNECTIVITY_SERVICE);

Method dataClass = ConnectivityManager.class.getDeclaredMethod(“setMobileDataEnabled”, boolean.class);
dataClass.setAccessible(true);
dataClass.invoke(dataManager, true);

在 OFFLINE 套件中运行单个测试用例之前,您可以在 setup() 方法中执行上述两个调用。完成离线套件中的所有测试用例后,您可以在最后的 teardown() 方法中重新启用 WiFi/DATA。

2) 查看您在 OP 中发布的应用程序,它似乎几乎是:

  • 根据操作系统版本使用ipTables

  • 根据所有应用程序的 UID 创建脚本 header 需要 WiFi/数据的

  • 应该获取设备上已安装应用的列表以及包管理器中的任何隐藏应用程序等。

  • 再次根据用户选择的黑名单执行脚本,用用户所需的覆盖 ipTable 中的现有规则规则。

可以肯定的是,编写所有这些代码肯定非常困难......以要点的形式听起来更容易。

希望这对你有所帮助。

P.S:如果您确实找到了一些东西,请发布更新的答案,想知道您是如何让它发挥作用的

更新:确保您拥有在应用程序 list 中设置 WiFi/数据开/关所需的权限。 不是 测试 apk list 。 它必须是应用程序 list 本身。这个图书馆可能对你有帮助。它是独奏的延伸。 http://adventuresinqa.com/2014/02/17/extsolo-library-to-extend-your-robotium-test-automation/

关于Android Instrumentation 测试离线案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27620976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com