TDD
-
[Robolectric] ActivityScenario 오류- java.lang.RuntimeException: Unable to resolve activity for IntentTDD 2021. 8. 12. 22:49
Robolectric을 다시 배워보고자 공부를 시작했다. Activity에서 사용하는 findViewById를 ActivityScenario에서 제공한다는 것을 알게되었고, 예제를 그대로 따라서 작성하였다. 그리고 부푼 마음으로 테스트를 실행해본 결과는 나의 기대와 달리 실패였고, 나는 다음과 같은 오류를 만나게 되었다. java.lang.RuntimeException: Unable to resolve activity for Intent { cmp=xxxxxxxx/.pos.test.TestMainActivity } -- see https://github.com/robolectric/robolectric/pull/4736 for details at org.robolectric.android.fakes.Ro..
-
Robolectric Test 수행 시 오류 NoSuchMethodError: No getAnnotatedParameterTypes()TDD 2021. 2. 20. 16:37
Robolectric은 실제 기기나 에뮬레이터 위에서 동작하는 것이 아닌 JVM 에서 동작하므로, 실제 기기나 에뮬레이터에서 테스트를 진행하는 androidTest 폴더에서 테스트를 진행하면 NoSuchMethodError: No getAnnotatedParameterTypes()..... 와 같은 오류가 뜨게 된다. 이 문제를 해결하려면 Robolectric 테스트는 androidTest 폴더가 아닌 Test 폴더에 생성하여 실행하여야 한다.
-
[TDD] Espresso의 한계를 느끼다...TDD 2020. 11. 30. 23:02
앞서 소개한 Espresso 테스팅 프레임워크를 실제로 적용해보려고 갖은 노력을 다해보았다. 지금 진행하고 있는 프로젝트가 MVC 디자인 패턴에 맞춰서 개발되고 있기 때문에, 기능이 동작할 뷰를 우선적으로 만들어야겠다는 생각에 뷰에 대한 테스트를 먼저 작성하기로 했다. 우선은 텍스트 뷰와 에딧텍스트 이미지 버튼등의 갖가지 뷰들을 배치하였고,이들이 뷰 상에서 동작해야할 테스트를 작성하려고 했는데 시작부터가 난관이었다. onView로 각 뷰를 찾아내서 perform하는 것까지는 쉬웠으나, 내가 원하는 속성을 check하는 것이 큰 골칫거리였다. 나는 특정 버튼이 눌리면 다른 레이아웃이 꺼지도록 의도하고 싶어서 visibility 관해 체크해보고 싶었으나, ViewAssertions에는 세 가지 메소드 밖에는..
-
[TDD] 안드로이드 UI 테스트 도구 에스프레소 소개TDD 2020. 11. 21. 18:55
TDD를 안드로이드에서 적용할 방안이 없을까 생각해보았다. JUnit은 일반적으로 예상한 값과 실제값을 비교하여 테스트에 통과했는지를 비교하는 방식으로 이루어진다. 그런데 이러한 JUnit을 안드로이드에서 바로 사용하기에는 실제 동작이 주로 UI에서 이루어지기에 적용하기는 어려워 보였다. 그러나 역시 이러한 TDD 방식을 안드로이드 환경에서도 할 수 있게끔 UI 테스트를 지원해주는 에스프레소라는 프레임워크를 알게 되었다. https://developer.android.com/training/testing/ui-testing/espresso-testing?hl=ko 해외에서도 국내에서도 UI 테스트에서 많이 쓰이는 지 안드로이드 개발자 문서에서도 이에 관한 내용을 찾아볼 수 있다. 에스프레소를 사용하려면 ..
-
[Espresso] androidx.test.espresso.PerformException: Error performing 'type text..... 오류 해결 경험 공유TDD 2020. 11. 21. 16:58
이번에 만들고 있는 텍스트 작성 프래그먼트의 레이아웃이다. 중앙에 있는 텍스트 뷰에 텍스트를 넣어보고 제대로 텍스트가 입력되었는지 테스트해보기로 하였다. TextView에 Hello라는 문자열을 입력하는 테스트 코드를 작성하였고, 실행해보니 결과는 실패, 오류가 떠서 문제가 뭔지 고민해봤는데, 어찌보면 당연한 것이었다.TextView에는 텍스트를 입력해서 바꿔 넣을 수 없다는 것. 그래서 당연하게도 실행에 실패. 그래서 해당 TextView를 EditText로 바꿔주었다. 테스트 코드를 간략하게 바꾸고 재 시도. 이번에도 실패. 입력한 텍스트가 실제로 일치하지 않는다고 한다.왜일까??? 혹시나 해서 text 란을 비워보고 다시 실행. 결과는 성공. 입력하려던 EditText에 Text라는 문자열이 이미 ..