Android Test를 하는 습관이 필요하다. UnitTest, Integration Testing, Functional testing 세가지를 나눠서 각각 상황과 시기에 적합한 테스트를 판단하고 진행한다.
UnitTest는 Base가 되는 뿌리라고 생각한다. 할 수 있다는 자신감은 언제나 필요한 덕목이지만 근거 없는 자신감은 코드 에러를 발생하게 한다. 내 자신감을 뒷 받침 해줄 수 있는 역할로 Unit Test를 수행한다. UnitTest에 주로 사용하는 Junit과 Robolectric testing 도구들은 범용성으로 구별할 수 있다. Junit의 경우 자바를 채택한 환경에서 돌아가는 반면, Robolectric 은 안드로이드 맞춤형으로 제작되어 테스트 할 때 간편함을 배로 높여줄 수 있다. 특징이 명확하게 나눠지는 만큼 무엇을 선택하느냐에 따라서 장단점이 존재할 수 있지만, 나는 이러한 장단점 까지 고려할 필요는 없을 것 같다.
Integration Testing는 하나의 시스템을 이뤘을 때, 예상한 결과를 도출하는지 확인하는 과정이다. '하나의 시스템을 이룬다'는 2개 이상의 모듈 결합과 구체적인 시나리오 수행을 의미한다. 통합이라는 의미를 가진 테스트 방식에는 역시나 여러 상황을 요구할 수 있다. Android Test를 중심으로 예를들자면, UI Test가 요구되는데 수고스럽게 특정 상황까지 만들어서 하기는 여러 비용이 소비된다. Espresso UI Test framework 를 결합해서 사용하면 UI를 통합한 테스트를 쉽고 빠르다는 이점이 존재한다. UI Test Framework는 방금 소개한 Espresso 이외에 Robotium, UIAutomator 등이 대표적이다.
Mockito 라이브러리는 mock생성,증명(verification ) 그리고 stub를 원활하게 하도록 static method mock(), verify() 등을 지원한다. android studio dependencies작성 주의사항으로는 androidTest는 mockito-android x.x.x 를 적용해야 한다는 점, 자세히 알아 보지 않고서 섣부른 판단으로 나 처럼 mockito-core 를 적용하는 헛지거리를 하지 않길 바란다.
Mockito를 알아보기 위해서는 여기를 참고하자ㅎㅎ.. 간단 명료하게 작성되어 있다.
Answer (Mockito 3.11.2 API) (javadoc.io)