-
[TDD] Espresso의 한계를 느끼다...TDD 2020. 11. 30. 23:02
앞서 소개한 Espresso 테스팅 프레임워크를 실제로 적용해보려고 갖은 노력을 다해보았다.
지금 진행하고 있는 프로젝트가 MVC 디자인 패턴에 맞춰서 개발되고 있기 때문에,
기능이 동작할 뷰를 우선적으로 만들어야겠다는 생각에 뷰에 대한 테스트를 먼저 작성하기로 했다.
우선은 텍스트 뷰와 에딧텍스트 이미지 버튼등의 갖가지 뷰들을 배치하였고,이들이 뷰 상에서 동작해야할 테스트를 작성하려고 했는데
시작부터가 난관이었다.
onView로 각 뷰를 찾아내서 perform하는 것까지는 쉬웠으나, 내가 원하는 속성을 check하는 것이 큰 골칫거리였다.
나는 특정 버튼이 눌리면 다른 레이아웃이 꺼지도록 의도하고 싶어서 visibility 관해 체크해보고 싶었으나,
ViewAssertions에는 세 가지 메소드 밖에는 포함되어있지 않았기 때문에,스택오버 플로우를 뒤져 다음과 같은 코드를 짜냈다.
그리고 어떤 버튼을 누르면 다른 Drawable이 나오는 것을 확인하는 코드를 짜려는데, 여기서 이미 Espresso의 ViewMatcher로는
진행이 불가능 했고,나는 hamcrest의 Matcher를 의존성 추가하여 사용해야 했다.
Drawable을 가지고 있는지를 확인하는 코드도 위의 hamcrest 구문을 사용하여 짜내긴 했으나 결국 저것도
완벽하게 Drawable을 확인해내는 것이라기 보다는 편법에 가깝다.
UI 테스트를 수월하게 진행해내고자 한다면 결국 모든 뷰의 속성에 원활히 접근해낼 수 있어야 하는데,
Espresso는 제공되는 API가 너무 한정적이라는 것을 깨닫게 되었다.
'TDD' 카테고리의 다른 글