5월, 2024의 게시물 표시

Android Compose Instrumentation test to unit test

이미지
사용 버전: Android Studio Jellyfish 2023.3.1 안드로이드 컴포즈 Instrumentation test to unit test를 알아보겠습니다. Instrumentation(계측) test(테스트)라고 하면, 보통 UI(유아이) test를 말합니다. Unit(유닛) test는 보통 코드의 로직을 test 할 때 사용합니다. Instrumentation test의 단점은 emulator(에뮬레이터)나 실제 device(장치)가 있어야 한다는 점인데요. 이는 테스트의 속도를 떨어뜨리게 됩니다. 이러한 Instrumentation test를 emulator 없이 실행할 수 있게 해주는 것이 있습니다. 바로 Robolectric(로보레트릭)입니다. https://robolectric.org 이처럼 Unit test처럼 test 할 수 있게 해줍니다. 적용해 봅시다. 앱 용 Build.gradle로 갑니다. testOptions를 적어주고, unitTests 그리고 isIncludeAndroidResources를 true로 만들어 줍니다. libs.versions.toml robolectric을 정의합니다. 그리고 testImplementation을 적어줍니다. 여러분 프로젝트에 libs.versions.toml을 사용하지 않는다면, 예시처럼 org.robolectric:robolectric:4.12를 적어주시면 됩니다. 자, 그러면 이제 context가 필요해서 androdTest로 만들었던 것들을 그냥 test로 옮길 수 있게 됩니다. 옮길 대상은 database와 repository입니다. unitTest로 옮겨졌네요. 그다음 해야 할 것을 문서에서 보면, 아래처럼 RunWith를 추가해 주는 것입니다. RunWith(RobolectricTestRunner.class) 옮겨온 test class 위에 적어줍니다. 그리고 기존에 context를 가져오는 코드를 변경합니다. RuntimeEnvironment.getApplication().ap

Android Github action

이미지
안드로이드 Github action을 알아보겠습니다. Github(깃허브) action(액션)은 CI/CD를 제공해 줍니다. https://docs.github.com/en/actions 또한 Github에 적용하기 쉽게 만들어졌는데요. Public(오픈된) Repository(저장소)의 경우 무료로 제공해 줍니다. 오늘 한 번 적용해 봅시다. 적용할 제 repository는 여기입니다. https://github.com/Jaehwa-Noh/Project-Flight-Search-App/tree/compose-flight-search-app Github에 Actions를 누릅니다. 아래의 Simple workflow의 Config를 눌러줍니다. 그러면, 이러한 창이 나옵니다. Github action은 YAML을 읽고 실행합니다. 기본적인 뼈대가 작성되어 있는 상태네요. 이 파일은 .github/workflows에 생성됩니다. 파일 이름을 Build.yml로 3번째 줄의 name은 Build Demo로 변경했습니다. 이렇게 표시됩니다. run-name은 workflows run에 사용될 이름입니다. 이렇게 표시됩니다. on은 언제 github action을 작동시킬지를 정합니다. 여기서는 push와 pull request에 작동을 하는데, 그 목표가 main 일 때입니다. jobs는 현재 action flow에서 실행될 모든 작업들의 집합입니다. jobs 아래에 이름을 추가할 수도 있습니다. build_apk로 지어줬습니다. runs-on은 실행할 장비를 선택합니다. 저는 ubuntu 최신 버전을 사용합니다. steps에는 이제 실행될 작업들을 나눠서 적어줍니다. 각각의 내용들은 독립된 스크립트로 실행됩니다. uses는 github action이 repository의 code(코드)에 접근할 수 있게 해줍니다. 실행되면 이렇게 보입니다. 이것은 예제 코드이고, 여기서 이제 진짜 build(빌드)를 하도록 만들어봅시다. Android instrumentation

Android Version catalog

이미지
사용 버전: Android Studio Jellyfish 2023.3.1 안드로이드 Version catalog를 알아보겠습니다. Version catalog는 Multi module(멀티 모듈)에서 동일한 라이브러리로 관리하고 사용할 때 필요합니다. 현재는 app module뿐인 상태이지만, modularization(모듈화)을 적용할 계획이기 때문에 적용해 봅시다. settings.gardle.kts에 코드를 적어서 사용하는 방법과 libs.versions.toml 파일을 만들어서 사용하는 방법 두 가지가 있습니다. 여기서는 libs.versions.toml 파일을 만들어서 사용하는 방법을 알아보겠습니다. 생성부터 합시다. Project - gradle - New - Version Catalog를 눌러줍니다. libs로 만듭니다. libs.versions.toml 3가지 부분이 자동으로 만들어지네요. [versions], [libraries], [plugins]가 있습니다. versions에는 version의 정보를 적어줍니다. libraries에는 library를 적어주고, plugins에는 plugin을 적어줍니다. build.gradle.kts에 있는 것들을 libs.versions.toml로 옮겨줍니다. 기존의 것을 변경합니다. libs.versions.toml 이렇게 변경됩니다. app - build.gradle.kts 기존의 것을 변경합니다. 이렇게 변경됩니다. dependencies에 있는 것들은 대부분 library로 취급됩니다. 다행히 여기 있는 것들은 자동 완성을 지원해 주네요. libs.versions.toml 이렇게 module을 정의할 수도 있고, group과 name으로 나눠서 정의할 수도 있습니다. 짜잔. 완성입니다. 참고 프로젝트:  https://github.com/Jaehwa-Noh/Project-Flight-Search-App/tree/compose-flight-search-app 끝. 카테고리: Android