Robotiumを使用するのは初めてですが、フォーラムのどこにもこれに対する答えが見つからないようです。テストしようとしているPreferenceActivityがあります。問題は、設定をクリックする必要があるときはいつでも単体テストが失敗することです。
具体的には、いくつかのテストを実行しているCheckBoxPreferenceがあります。CheckBoxPreferenceがチェックされているときに、画面上に有効になっている(グレー表示されていない)特定の設定があることを確認したいと思います。その逆も同様です。searchText()
現在のところ、 /メソッドを使用して設定を見つけることさえできませんwaitForText()
(これは画面の最初の設定です)。clickOnView()
から設定のビューを取得した後、メソッドを使用してみましたgetView()
。
私が今できる最善のことは、AndroidのsetChecked()
メソッドを使用してCheckBoxPreferenceの状態を操作することだと思われます。この方法でのテストは可能であると思いますが、私が見ている基本的なことがあります。PreferenceActivityもListActivityであるため、ListActivityのテストに関連する質問を検索してみましたが無駄になりました。
次のいくつかのリンクは、PreferenceActivitiesとRobotiumでの作業の良いスタートを切りました。
これが私が使っているコードです:
public void testEnabledChecked() throws Exception {
CheckBoxPreference enabled = PrefTestingUtils.getCheckBoxPreference(mSolo, mActivity,
(String) getVal("KEY_ENABLED"));
EditTextPreference recipient = PrefTestingUtils.getEditTextPreference(mSolo, mActivity,
(String) getVal("KEY_RECIPIENT"));
EditTextPreference title = PrefTestingUtils.getEditTextPreference(mSolo, mActivity,
(String) getVal("KEY_TITLE"));
ListPreference interval = PrefTestingUtils.getListPreference(mSolo, mActivity,
(String) getVal("KEY_INTERVAL"));
// ensures that the preference is unchecked
if (!enabled.isChecked()) {
Log.d(TAG, "Enabled preference unchecked, clicking on it");
// mSolo.clickOnView(enabled.getView(null, null)); // Attempt #1
// mSolo.clickOnText("Enabled"); // Attempt #2
// mSolo.clickOnCheckBox(0); // Attempt #3
// mSolo.searchText("Enabled"); // cannot find view
}
assertTrue(enabled.isChecked()); // AssertionFailedError here
assertTrue(recipient.isEnabled());
assertTrue(title.isEnabled());
assertTrue(interval.isEnabled());
}
PrefTestingUtils関数が実際に設定への有効な参照を返していることを確認しました。すべてのPrefTestingUtils関数は次のようになります。
public static CheckBoxPreference getCheckBoxPreference(Solo solo,
PreferenceActivity activity, String key) {
if (solo == null || activity == null || key == null) {
Log.d(TAG, "getCheckBoxPreference::Null parameter");
return null;
}
Preference p = activity.findPreference(key);
if (p instanceof CheckBoxPreference) {
return (CheckBoxPreference) p;
}
return null;
}
誰でもできる助けをいただければ幸いです。ありがとう!