안드로이드 테스트에서 고민을 많이 했는데 결과적으로 로봇이 됐어요.
사슴입니다.
안드로이드의 자동화 테스트에서 다음 프레임워크를 시도했습니다.그 보고서야.
결실
갑작스러운 결과지만 올드 브랜드 로보티움을 선택했다.나머지 두 개는 불안정해서 잘 몰라서 포기했어요.
Espresso
구글 I/O 2013에서 발표됐기 때문에 최근 트렌드가 에스프레소가 아닐까 싶어 애초에 손을 댔다.
자세히 보니 위원은 올해 1월에 멈췄다.이거 폐기됐네.
Changes - android-test-kit - Google's Testing Tools For Android - Google Project Hosting
사용하지 못한 곳
Activity 간 화면 마이그레이션 테스트 결과가 매우 불안정합니다.OK 또는 NG.public void testSayHello() {
//このclickで画面遷移すると仮定する。
onView(withId(R.id.greet_button))
.perform(click());
//遷移後の画面に"Hello Steve!"が表示されるが、このassertはOKだったりNGだったりする。
onView(withText("Hello Steve!"))
.check(matches(isDisplayed()));
}
Robolectric
이곳은 업데이트가 빈번하고 구글의 검색 결과도 많아서 안심이 됩니다.
사용하지 못한 곳
기본적으로 Robolectric는gradle에서 사용할 수 없거나 사용하기 어렵다.하지만 robolectric 팀은 그레이드의pluggin을 제작해 사용하기 쉬워졌다.
robolectric/robolectric-gradle-plugin
여기까지는 괜찮은데 실수가 좀 있어서 도저히 행사장에 갈 수가 없어요.움직이기 시작해도 난이도가 낮은 시험을 치르려면 기술 노하우를 찾지 못하는 경우가 많다.
licationIdSuffix 버그 적용
gradle을 사용하면...buildTypes {
debug{
applicationIdSuffix ".debug"
}
}
아마 debug용 포장을 만들어야 할 것 같은데 이유가 있어서 움직일 수 없어요.
자원을 찾을 수 없음
상술한 상태에서 집행하면
NotFoundException: no such label string/app_label
이렇게 돼서분명히 app/build/intermediate/res/debug/values에 있습니다.음...
다중 스레드를 테스트할 수 없습니다.
아무리 해도 다중 스레드를 동기화할 수 없다. //クリックすると非同期処理が始まる
clickOn(view);
//ちょっとまってくれる(願望)
Robolectric.runUiThreadTasksIncludingDelayedTasks()
//非同期処理終了後、ダイアログが表示されるはずなので取得する。
AlertDialog alert = ShadowAlertDialog.getLatestAlertDialog();
//だが、この時点でalertはnull
assertNotNull(alert);
어쩌면 조금만 더 공부하면 움직일지 몰라도 시간은 영원하지 않으니 당분간 놔둬.
robotium
안드로이드 근처에 있는 오래된 번호 테스트 프레임워크입니다.업데이트도 정기적으로 진행한다.
설명서는 왠지 pdf라고 불리는데, 약간 미친 듯이 운용하는 방침이다.
좋은 곳
화면 이동 테스트가 안정적이고 비동기 테스트도 정상적으로 작동한다.Espresso보다 메모는 어렵지만 Ac t i v i ty Instrumentation Case2보다 쓰기 쉽습니다.코드량은 이번에 열거한 프레임워크에서 가장 적다.
화면 이동 테스트
단지 두 줄로 완성했다.좋지 않다.public void testTerm(){
//viewのクリック処理
solo.clickOnView(mActivity.findViewById(R.id.termView));
//新規に開いたActivityと一致するか
solo.assertCurrentActivity("利用規約画面", TermWebActivity_.class);
}
그래서 힘낼게요.
Reference
이 문제에 관하여(안드로이드 테스트에서 고민을 많이 했는데 결과적으로 로봇이 됐어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shikajiro/items/d28bf5eb4c9268f81131
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public void testSayHello() {
//このclickで画面遷移すると仮定する。
onView(withId(R.id.greet_button))
.perform(click());
//遷移後の画面に"Hello Steve!"が表示されるが、このassertはOKだったりNGだったりする。
onView(withText("Hello Steve!"))
.check(matches(isDisplayed()));
}
이곳은 업데이트가 빈번하고 구글의 검색 결과도 많아서 안심이 됩니다.
사용하지 못한 곳
기본적으로 Robolectric는gradle에서 사용할 수 없거나 사용하기 어렵다.하지만 robolectric 팀은 그레이드의pluggin을 제작해 사용하기 쉬워졌다.
robolectric/robolectric-gradle-plugin
여기까지는 괜찮은데 실수가 좀 있어서 도저히 행사장에 갈 수가 없어요.움직이기 시작해도 난이도가 낮은 시험을 치르려면 기술 노하우를 찾지 못하는 경우가 많다.
licationIdSuffix 버그 적용
gradle을 사용하면...
buildTypes {
debug{
applicationIdSuffix ".debug"
}
}
아마 debug용 포장을 만들어야 할 것 같은데 이유가 있어서 움직일 수 없어요.자원을 찾을 수 없음
상술한 상태에서 집행하면
NotFoundException: no such label string/app_label
이렇게 돼서분명히 app/build/intermediate/res/debug/values에 있습니다.음...
다중 스레드를 테스트할 수 없습니다.
아무리 해도 다중 스레드를 동기화할 수 없다.
//クリックすると非同期処理が始まる
clickOn(view);
//ちょっとまってくれる(願望)
Robolectric.runUiThreadTasksIncludingDelayedTasks()
//非同期処理終了後、ダイアログが表示されるはずなので取得する。
AlertDialog alert = ShadowAlertDialog.getLatestAlertDialog();
//だが、この時点でalertはnull
assertNotNull(alert);
어쩌면 조금만 더 공부하면 움직일지 몰라도 시간은 영원하지 않으니 당분간 놔둬.robotium
안드로이드 근처에 있는 오래된 번호 테스트 프레임워크입니다.업데이트도 정기적으로 진행한다.
설명서는 왠지 pdf라고 불리는데, 약간 미친 듯이 운용하는 방침이다.
좋은 곳
화면 이동 테스트가 안정적이고 비동기 테스트도 정상적으로 작동한다.Espresso보다 메모는 어렵지만 Ac t i v i ty Instrumentation Case2보다 쓰기 쉽습니다.코드량은 이번에 열거한 프레임워크에서 가장 적다.
화면 이동 테스트
단지 두 줄로 완성했다.좋지 않다.public void testTerm(){
//viewのクリック処理
solo.clickOnView(mActivity.findViewById(R.id.termView));
//新規に開いたActivityと一致するか
solo.assertCurrentActivity("利用規約画面", TermWebActivity_.class);
}
그래서 힘낼게요.
Reference
이 문제에 관하여(안드로이드 테스트에서 고민을 많이 했는데 결과적으로 로봇이 됐어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shikajiro/items/d28bf5eb4c9268f81131
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public void testTerm(){
//viewのクリック処理
solo.clickOnView(mActivity.findViewById(R.id.termView));
//新規に開いたActivityと一致するか
solo.assertCurrentActivity("利用規約画面", TermWebActivity_.class);
}
Reference
이 문제에 관하여(안드로이드 테스트에서 고민을 많이 했는데 결과적으로 로봇이 됐어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shikajiro/items/d28bf5eb4c9268f81131텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)