Android

    [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..

    [Android/Testing] #4. Room Database 테스트

    [Android/Testing] #4. Room Database 테스트

    이 글의 모든 코드는 아래 저장소에서 확인할 수 있다. https://github.com/linuxias/Android-Testing/tree/main/Testing_RoomDB GitHub - linuxias/Android-Testing Contribute to linuxias/Android-Testing development by creating an account on GitHub. github.com 데이터베이스 코드 TestDao.kt package com.linuxias.testing_roomdb.data.local import androidx.lifecycle.LiveData import androidx.room.* @Dao interface TestDao { @Query("SELECT * ..

    [Android/Testing] #3. Unit Testing 입문하기

    [Android/Testing] #3. Unit Testing 입문하기

    테스트를 위한 라이브러리 추가 및 확인하기 처음 안드로이드 프로젝트를 생성하고 gradle module을 열면 아래와 같이 테스트 관련 의존성 모듈을 확인할 수 있다. testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' junit : 안드로이드, 자바, 코틀린을 위한 표준 테스팅 프레임워크 ext.junit : 안드로이드 프레임워크에서 테스팅을 위한 확장 라이브러리 espresso : 사용자 인터페이스(User Interface) 테스팅을 위한 라이브러리 여..

    [Kotlin] Flow<List<T>> 에서 List<T>로 변환하기.

    [Kotlin] Flow<List<T>> 에서 List<T>로 변환하기.

    간혹 코루틴에서 Flow를 사용하여 데이터의 흐름을 제어하는 경우에 Flow 내부에 List를 사용하는 경우가 종종 있다. 이러한 상황에서 Flow 내부 List를 얻기 위해서는 flat-mapping 을 사용하여 얻을 수 있다. suspend fun Flow.flattenToList() = flatMapConcat { it.asFlow() }.toList() suspend fun test() { val flowOfLists: Flow = flowOf(listOf(1, 2), listOf(3, 4)) val flatList: List = flowOfLists.flattenToList() println(flatList) }

    [Android/Testing] #2. 좋은 테스트는 어떻게 작성해야 할까?

    [Android/Testing] #2. 좋은 테스트는 어떻게 작성해야 할까?

    처음 프로젝트를 시작하며 테스트를 작성하는 것 보다 기존의 작성된 코드(Legacy Code, 이하 레거시 코드)를 테스트하기 위한 테스트 코드를 만드는 것은 매우 어려운 일이다. 이 점은 많은 개발자가 실제 경험하면서도 이해하고 있을거라 생각한다. 레거시 코드를 테스트 하기 위해 만들어지는 테스트는 모든 비지니스 로직을 커버하기란 사실상 불가능하다. 테스트 코드는 신규 비지니스 로직보다 먼저 말들어 져야하고, 레거시 코드를 수정하는 경우에도 실패하는 테스트케이스(Failed Testcase)가 먼저 작성되어야 한다. TDD : 실제 구현 코드 작성 전에 테스트부터 작성하자 테스트 주도 개발(Test Driven Development, 이하 TDD)은 애자일 개발 방법론 중 하나인 익스트림 프로그래밍(e..

    [Android/Testing] #1. 왜 테스트를 해야 하는가?

    [Android/Testing] #1. 왜 테스트를 해야 하는가?

    테스트는 개발자들이 소프트웨어를 개발하는 과정에서 매우 중요한 부분이다. 개발하는 소프트웨어가 출시되기 전에 치명적인 오류와 잠재적인 문제, 그리고 안전한 코드 작성을 위한 도구로 많이 사용된다. TDD(Test Driven Development, 테스트 주도 개발)은 많은 소프트웨어 회사에서 당연시 될 정도로 테스트는 중요하다. 하지만 아직 테스트는 검증팀에서 해야하는 것이라 생각하는 개발자도 많은 것 같다. 특히 소프트웨어를 모두 개발한 이후에 테스트를 작성하는 방법을 사용하는 개발자들도 많은 것으로 안다. 왜 소프트웨어를 개발하는 과정에서 테스트는 필수이며 안드로이드에서는 어떤 테스트를 주로 사용하는지 정리한다. 테스트란 무엇인가? 테스트는 소프트웨어의 품질을 조사하는 과정이라고 할 수 있다. 20..