2012-03-13 9 views
1

私はAndroidアプリケーションのテスト自動化にRobotiumを使用しています。それは素晴らしいですが、メンテナンスは巨大です。Android、Robotium - ローカライズされたビルドを使用するには?

私のアプリケーションは20の言語にローカライズされていますが、テスト用のAPK(私の自動テストを実行するロジックを含む)にアプリケーション文字列リソースをコンパイルしています。 。これは、Google CodeのRobotiumプロジェクトページで見つけた例と一致しています。例えば

solo.clickOnText(res.getString(R.string.settings_menu)); 

私がいる問題は、文字列が早く私の製品のビルドで毎日変更される可能性があることです。

アイテムをクリックするために実際の文字列とは対照的に文字列IDを使用する方法はありますか?これらはすべての言語でユニークであり、私は現在保守コストが高くないでしょう。

TIA。

答えて

1

対話したいビューのリソースIDを使用できます。例:

Button button = (Button) solo.getView(R.id.x); 
solo.clickOnView(button); 
+0

ありがとうRenas - テキストリンクはどうですか?上記のpnlyはボタンに対して機能しますか?私は私のアプリでたくさんのテキストリンクを持っています。 –

+0

ボタンをTextViewで置き換えます。 – Renas

1

あなたはどんなに正しい文字列を考え出す必要がありますお使いの言語がそれに変わるものを

String myLocalizedString = getActivity().getResources().getString(R.string.settings_menu); 
solo.clickOnText(myLocalizedString); 

を使用しないことができるはずです。私はあなたがresource qualifiersを使用していると仮定しています。

res 
    values 
    strings.xml 
    values-fr 
    strings.xml 
+0

は、次に以下のようなスクリプトを使用しています。私の質問は、代替案があるかどうかです。 R.javaでは、アプリケーションをコンパイルするときに一意の文字列IDが生成されるようですが、実際の文字列値とは対照的にこれらを使用できれば、正しい文字列リソースを持つことを心配する必要はありませんビルド) –

+0

'getActivity()。getString()'が少し短くなっています –

0

テスト済みのプロジェクトのリソースIDを使用します(APKのみをテストしている場合は、テストプロジェクトにR.javaをインポートします)。これは私が現在使用しているアプローチである

View view = solo.getCurrentActivity().findViewById(R.id.resourceId); 
solo.clickOnView(view); 
関連する問題