ハイブリッドアプリのUIテストを実行する方法についてのエントリです。
今回利用したテスト対象アプリ、UIテストフレームワークは、以下のとおりです。
・対象アプリ:XTranslator(ハイブリッドアプリ)のAndroid版
・UIテストフレームワーク:Robotium 4.3.1
Robotiumは3.x系の時は、サポートされていなかったハイブリッドアプリのテストが4.xから実行できるようになっていたようです。自分が公開しているハイブリッドアプリに適用したので、関連情報を紹介します。
Robotiumの使い方などについては、公式サイトなどを別途参照ください。
■テスト対象アプリ(XTranslator)
入力したテキストを翻訳するというシンプルなアプリです。
Android、iOS、Tizen、FirefoxOSに対応しています。
詳細は、こちらのエントリをご参照ください。
■テストコード(Robotium利用)
/**
* テキスト入力後、翻訳ボタンを押下し正しい翻訳結果が表示されることを確認する。
* (英語→ドイツ語の翻訳で、"bookstore"が"Buchhandlung"に翻訳されること)
*/
@Smoke
public void test_正常に翻訳できることを確認する() throws Exception {
String TEXT_INPUT = "bookstore";
String TEXT_OUTPUT = "Buchhandlung";
// GUI部品の表示チェック
assertTrue(solo.waitForWebElement(By.id("inputText")));
assertTrue(solo.waitForWebElement(By.id("buttonTranslate")));
// 入力エリアへのテキスト入力
solo.enterTextInWebElement(By.id("inputText"), TEXT_INPUT);
solo.sleep(3000);
assertEquals(TEXT_INPUT, solo.getWebElement(By.id("inputText"), 0).getText());
// 翻訳ボタンの押下
solo.clickOnWebElement(By.id("buttonTranslate"));
solo.sleep(5000);
// 出力エリアの内容チェック
assertEquals(TEXT_OUTPUT, solo.getWebElement(By.id("outputText"), 0).getText());
}
■テスト動画
■Robotiumでハイブリッドアプリをテストする場合の補足
Robotiumの根幹をなすSoloクラスの中で、○○Web○○というメソッドが
ハイブリッドアプリのテストの際に利用できると考えれば良さそうです。
HTMLのGUI部品をID指定で選択し、クリックさせたり、テキストを入力することができます。
ハイブリッドアプリでテストしたいアクションの全てをRobotiumがカバーしているかは分かっていませんが、参考になればと思います。
[Mobile Dev blog] ハイブリッドアプリのUIテスト(Robotium編) http://t.co/ZPBapi3G0V
RT @korodroid: [Mobile Dev blog] ハイブリッドアプリのUIテスト(Robotium編) http://t.co/ZPBapi3G0V