Android/Android

[Android:Codelab] Testing Basic-1

RIEN😚 2023. 1. 20. 18:02
728x90

👇🏻 참고문서

 

Advanced Android in Kotlin 05.1: Testing Basics  |  Android Developers

Learn the basics of testing your Android Kotlin apps. In this codelab you’ll learn to run tests, write basic tests, work with AndroidX Test, as well as test ViewModel and LiveData.

developer.android.com

안드로이드 독학하기 시리즈! 테스트입니다.

어떻게 해야하는지 모르겠어서 더 공부하기 어려웠던 부분었던거 같아요.😭

 

이론에 대해서는 Android 공식문서를 보고 선행학습하고

이번에는 코드랩에 대해서 공부도할겸 블로그에 정리해보고 있어요.

틀린점이 있다면 꼭 댓글 부탁드려요.🙏

 

1. 시작하면서

저는 기존에는 어플리케이션이 정상적으로 동작하는지 확인하기 위해서 직접 애뮬레이터나 실제 기기에 실행시키고 확인해보았었습니다.

이렇게 직접 사람이 확인해보는 테스트를 수동 테스트(Manual test)라고 합니다.

 

이러한 테스트 방식은 앱이 작고 제공하는 기능이 적을 때는 괜찮지만, 앱을 운영하면서 점차 기능을 추가하거나 수정할 때 많은 시간과 리소스를 소비할 수 밖에 없습니다.😅

 

이를 위해 코드와 기능들을 자동으로 테스트할 수 있도록 다양한 테스트 프레임워크들이 제공되고 있으며,

이 포스트에서는 이러한 프레임워크들을 이용해 어떻게 테스트코드를 작성하는지에 대해 학습해보고자 합니다.

 

2. 이 코드랩에서 구현할 앱은!

구글 코드랩에서는 이렇게 직접 앱을 구현해보면서 배울 수 있다는 점이 정말 좋은거 같아요. 👍🏻

이 코드랩에서는 TO-DO Notes app으로 해야할 사항들에 대해 CRUD 작업들을 제공해줍니다.

🌹 Github: https://github.com/googlecodelabs/android-testing.git

2.1 프로젝트 구조

👇🏻 구글 개발자분이 정리한 프로젝트 구조 이미지

구조는 안드로이드 공식문서에서 권장하는 아키텍처와 동일하게 구성되어있는 것을 알 수 있습니다.

 

앱 아키텍처 가이드  |  Android 개발자  |  Android Developers

앱 아키텍처 가이드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함

developer.android.com

 

3. 테스트 실행해보기

테스트를 실제로 실행시켜보기 전에 테스트 코드가 어디에 있는지 먼저 알아보겠습니다.

안드로이드 스튜디오에서 프로젝트를 생성하면 기본적으로 3개의 디렉토리가 자동으로 생성되는것을 볼 수 있습니다.

  • main: 실제 app 코드가 위치하는 디렉토리입니다.
  • androidTest: instrumented test와 관련된 코드
  • test: local test와 관련된 코드

3.1 Local test vs. Instrumented test

1. Local test

- emulator나 실제 기기가 아닌 개발자도구(Android Studio)의 JVM 환경에서 실행되는 테스트

- Instrumented test에 비해 빠르지만 정확도가 낮은 테스트

- Android Studio에서 아래 이미지와 같은 icon으로 표시됩니다.

2. Instrumented test

- 안드로이드 기기(emulator 포함)에서 실행되는 테스트로 실제 사용자의 입장에서 기능을 테스트합니다.

- local test에 비해 테스트를 완료하는데 오랜 시간이 소요됩니다.

- Android Studio에서 안드로이드 아이콘과 같이 표시됩니다.

 

3.2 local test 실행하기

  1. 위에서 말했듯이 로컬 테스트 코드가 위치한 test 폴더를 열어, ExampleUnitTest.kt 파일을 열어줍니다.
  2. 파일을 마우스 오른쪽 버튼으로 클릭해 Run ExampleUnitTest를 선택해주세요.
  3. Run window를 열어, 테스트가 정상적으로 완료되었는지 확인할 수 있습니다.

요렇게!

테스트를 실행하는 방법은 여러가지가 있지만, 아래 방법만 더 알고있자

 

3.3 테스트 실패해보기(?)

안드로이드를 테스트할 때는 주로 JUnit 라이브러리를 사용하게 됩니다.

위 이미지에 보이는 코드에 나오는 assertions@Test 어노테이션 또한 JUnit에서 제공해주는 것입니다.

 

Assertion

- 코드가 정상적으로 작동했는지 검사할 때 사용되며, 테스트에서 가장 중요 부분입니다.

 

예를 들어 보자, 위의 코드 중

assertEquals(4, 2+2)

이 부분은 Equals라는 단어에서 알 수 있듯이, 4와 2+2의 결과가 동일한지 검사하는 assertion입니다.

 

그럼 이 테스트를 실패하는 경우는?

assertEquals(3, 1+1)

이렇게 검사할 경우에는 3과 1+1이 같지 않으므로 실패한 테스트라고 할 수 있습니다.

그럼 이 코드를 안드로이드 스튜디오에서 직접 테스트 해봅시다!

테스트 결과로 몇 가지 사실을 알 수 있습니다.🤗

  • 기대했던 값과 실제 값
  • failed assertion의 위치(ExampleUnitTest.kt:16)
  • 하나의 assertion만 실패해도 테스트 전체가 실패된다는 점

 

3.4 Instrumented test 실행해보기

  • 앞에서 말했듯이 Instrumented test 코드가 위치한 androidTest 폴더를 열어줍니다.
  • ExampleInstrumentedTest 테스트를 실행시켜보자.
🌹 주의! Instrumented test는 local test와 달리 실제 기기(emulator 포함)에서 실행시켜주어야 합니다.

요렇게!

 

포스트가 길어질거 같아서, 한번 끊고 진행하도록 하겠습니다.😌

 

반응형