Robotium을 처음 사용 했으므로 어디서나 포럼에서 이에 대한 답변을 찾을 수 없습니다. PreferenceActivity를 테스트하고 있습니다. 문제는 환경 설정을 클릭해야 할 때마다 단위 테스트가 실패한다는 것입니다.Robotium에서 PreferenceActivity 테스트하기
좀 더 구체적으로 말해서 나는 몇 가지 테스트를 실행하고있는 CheckBoxPreference가 있습니다. CheckBoxPreference가 선택되었을 때 화면에 활성화 된 (회색으로 표시되지 않은) 특정 환경 설정이 있는지 확인하고 그 반대의 경우도 확인합니다. 현재로서는 searchText()
/waitForText()
개의 방법 (화면의 첫 번째 환경 설정)을 사용하여 환경 설정을 찾을 수 없습니다. 나는 또한 getView()
에서 선호도의보기를 얻은 후에 clickOnView()
방법을 사용해 보았습니다.
내가 지금 할 수있는 최선의 방법은 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 기능은 실제로 환경에 유효한 참조를 반환하는 것을 확인했다 : 여기
http://fyrecloud.com/index.php?topic=5.0
- 내가 함께 일하고 코드입니다. 모든 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; }
아무나 도와 줄 수있는 모든 도움을 주시면 감사하겠습니다. 감사!
이전에 PreferenceActivity를 성공적으로 테스트했습니다. 너 뭐 해봤 니? 현재 테스트 클래스 코드를 게시해야합니다. 그렇지 않으면 포인터를 제공하기가 어렵습니다. – dmon
감사합니다. dmon. 내 코드를 포함하도록 내 게시물을 편집했습니다. – rach5000