RobotiumのテストケースでデバイスのWi-Fiをオン/オフに切り替えることはできますか?初期段階でwifiをオンにしてから、wi-fiをオフにして、テストを続行する必要がある問題をテストしているためです。
4 に答える
はい、できます。例を参照してください。
public void testNoNetworkConnection()は例外をスローします{
setWifiEnabled(false); // do stuff solo.something setWifiEnabled(true); } private void setWifiEnabled(boolean state) { WifiManager wifiManager = (WifiManager)solo.getCurrentActivity().getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(state); }
マニフェストファイルに権限を追加することを忘れないでください。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
編集:新しいRobotium 5.3.1では、setWiFiData(ブール値turnedOn)を使用してwifiをオンまたはオフにすることができます(ドキュメントを参照)
楽しみ
Testdroidが提供するExtSoloを使用できます。ライブラリはhttps://github.com/bitbar/robotium-extensionsと必要な方法のAPIで見つけることができます:wifiを回します。追加のライブラリを使用したくない場合は、次のコードを使用できます。
protected void turnWifi(boolean enabled) {
try {
WifiManager wifiManager = (WifiManager) getInstrumentation()
.getTargetContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(enabled);
} catch (Exception ignored) {
// don't interrupt test execution, if there
// is no permission for that action
}
}
Wifiの状態を変更するには、アプリケーションで許可が必要です
アプリケーションの動作(wifiがオンの場合とオフの場合)がわかっているアプリケーションをテストするため、それに応じてデータをモックすることができます。データをモックすると、アプリケーションはその特定の状況で期待どおりに動作するようになります。
これを行う簡単な方法はありません。それは不可能だと私が言っているのとは異なりますが、これを行うことを思いとどまらせるには十分かもしれません。
アプリケーションに適切な権限がある場合は、robotiumスクリプトから、他のアプリケーションと同じように実際にWi-Fiをオンまたはオフにすることができます。ただし、アクセス許可は、テストapkマニフェストではなくアプリケーションマニフェストにある必要があることに注意してください。
アプリケーションに適切な権限がない場合(そしてそれを変更したくない場合)、別の方法がありますが、かなりの作業が必要です(私が使用するソリューションをオープンソースで入手するために取り組んでいます)。サービスとしてのアクセス許可を持つアプリケーションを作成し、テストでそのサービスにバインドして、そのサービスにWi-Fiをオフにするように依頼します。