Android/Testing

    [Android/Testing] #10. Fragment Navigation Test

    [Android/Testing] #10. Fragment Navigation Test

    지난 글에서 Hilt를 사용한 프레그먼트 테스트를 위한 환경과 테스트 방법을 간단하게 알아보았다. 이번 글에서는 동일하게 프레그먼트 테스트를 진행하는데 Navigation을 사용하여 프레그먼트 간 인터렉션에 관한 테스트를 정리한다. 이번 테스트는 Unit Test가 아니라 인터렉션에 대한 테스트가 필요하기에 Integration Test로 테스트를 작성한다. 테스트 프레그먼트 네이게이션 테스트를 위한 프레그먼트는 총 3개로 구성되어 있다. MarsPhotoFragment AddMarsPhotoItemFragment ImagePickFragment 각 프레그먼트는 버튼으로 프레그먼트 간 이동 인터렉션이 발생한다. 우리가 중점적으로 테스트 하려는 부분이 이 인터렉션 부분이다. 이 글에서 Navigation,..

    [Android/Testing] #9. Dagger-Hilt 적용하여 프레그먼트 테스트하기

    [Android/Testing] #9. Dagger-Hilt 적용하여 프레그먼트 테스트하기

    프레그먼트는 앱에서 재사용할 수 있는 컨테이너 역할을 하는 컴포넌트로 프레그먼트를 사용하면 다양한 Activity와 Layout 구성에서 일관된 사용자 인터페이스 레이아웃을 사용자에게 더욱 쉽게 제공할 수 있다. 용도가 다양한 프레그먼트를 고려하면 프래그먼트가 일관되고 리소스 효율적인 환경을 제공하는지 검증하는 것이 중요하다. 프레그먼트 테스트 시에는 AndroidX의 'fragment-testing' 라이브러리를 사용하여 테스트를 진행한다. fragment-testing 라이브러리는 프레그먼트 테스트 시 도움을 받을 수 있는 FragmentScenario 클래스를 지원한다. 해당 클래스는 프레그먼트의 생성과 Lifecycle.State 변경을 지원한다. 2022년 11월 15일 기준 fragment-t..

    [Android/Testing] #8. 테스트에 Dagger-Hilt 적용해보기

    [Android/Testing] #8. 테스트에 Dagger-Hilt 적용해보기

    Dagger-Hilt(이하 Hilt)와 같은 DI(Dependency Injection, 의존성 주입) 프레임워크를 사용하여 얻을 수 있는 장점 중 하나는 코드를 더 쉽게 테스트할 수 있다는 점이다. 테스트하려는 각 컴포넌트, 모듈들은 독립적으로 테스트 되어야 한다. 하지만 각 컴포넌트 들은 상호간의 관계, 즉 의존성을 가지고 각자의 역할을 수행하거나 필요한 역할을 상대에게 위임하게 된다. 테스트 시에는 이런 역할을 수행할 의존성 대상을 직접 생성할 수도 있지만, 의존성 주입 프레임워크인 Hilt를 사용하여 좀 더 쉽고 빠르게 의존성을 주입하여 테스트를 간편화 할 수 있다. 이번 글에서는 테스트 시 Hilt를 적용하는 방법 중 간단한 내용에 대해 정리하고자 한다. 그 후 Hilt를 이용한 Testing ..

    [Android/Testing] #7. ViewModel 테스트하기 (with Fake Repository)

    [Android/Testing] #7. ViewModel 테스트하기 (with Fake Repository)

    ViewModel을 테스트해보자. 테스트 완성 코드는 아래 경로를 참조하자. https://github.com/linuxias/Android-Testing/tree/testing_viewmodel/Setup_For_Testing GitHub - linuxias/Android-Testing Contribute to linuxias/Android-Testing development by creating an account on GitHub. github.com 들어가기 앞서 원래 테스트의 목적은 테스트주도개발(Test Driven Development) 방법론을 사용한 개발 시 비지니스 로직과 함께 테스트를 작성하며 프로젝트를 완성해 나아가는 것이다. 하지만 블로그 정리 시 그러한 과정을 하나하나 설명하기에..

    [Android/Testing] #6. 테스트 시작 전에 테스트 더블(Test Double) 이해하기

    [Android/Testing] #6. 테스트 시작 전에 테스트 더블(Test Double) 이해하기

    테스트 더블(Test Double)의 유래? 영화 촬영에서 배우를 대신하는 스턴트맨을 들어 본 적이 있을 것이다. 스턴트맨의 또 다른 이름이 스턴트 더블이다. 영화나 드라마에서, 무술 장면이나 실제 배우가 출연하기 힘든 위험한 장면을 촬영할 때 그 분야에 전문적으로 숙달되어 있는 사람을 고용하는데, 이들을 스턴트맨이라고 부른다. 출처 : https://namu.wiki/w/%EC%8A%A4%ED%84%B4%ED%8A%B8%EB%A7%A8 테스트 더블이란 용어는 xUnit Test Patterns의 저자인 제라드 메스자로스(Gerard Meszaros)가 처음 사용한 용어이다. 테스트 더블은 스턴트 더블에서 유래되었다. 테스트를 위해 시스템의 필요한 부분은 실제 배우가 아닌 스턴트 배우처럼 테스트 더블이란..

    [Android/Testing] #5. 테스트를 위한 기반 프로젝트 생성하기

    [Android/Testing] #5. 테스트를 위한 기반 프로젝트 생성하기

    이번 글에서는 다양한 테스트를 위한 기반 프로젝트를 생성한다. 이후에 ViewModel, Dagger-Hilt, Retrofit 등 다양한 프레임워크와 함께 구글 안드로이드 진영에서 제안하는 클린 아키텍처에 대한 테스트 고민도 함께 진행을 하려한다. 그러한 테스트에 앞서 테스트를 하기 위한 프로젝트를 미리 생성한다. 해당 프로젝트의 전체 코드는 다음과 같다. (https://github.com/linuxias/Android-Testing/tree/setup_for_testing/Setup_For_Testing) 프로젝트의 기반 프로젝트 (?) 테스트를 위한 기반 프로젝트는 안드로이드 코드랩에서 제공하는 MarsPhoto 프로젝트(https://developer.android.com/codelabs/bas..