Android 스튜디오에서 테스트하기

Android 스튜디오는 테스트 작업을 단순화할 수 있도록 설계된 것으로, 테스트를 생성, 실행, 분석하는 방법을 간소화할 수 있는 여러 기능이 포함되어 있습니다. 로컬 시스템에서 실행하는 테스트나 기기에서 실행하는 계측 테스트를 설정할 수 있습니다. 하나 이상의 기기에서 단일 테스트나 특정 테스트 그룹을 쉽게 실행할 수 있습니다. 테스트 결과는 Android 스튜디오 내에 직접 표시됩니다.

그림 1. 테스트 결과 개요를 보여주는 Android 스튜디오

이 페이지에서는 Android 스튜디오에서 테스트를 관리하는 방법을 설명합니다. 자동화된 Android 테스트를 작성하는 방법은 Android에서 앱 테스트하기를 참고하세요.

테스트 유형 및 위치

테스트 위치는 작성하는 테스트의 유형에 따라 결정됩니다. Android 프로젝트에는 로컬 단위 테스트와 계측 테스트를 위한 기본 소스 코드 디렉터리가 있습니다.

로컬 단위 테스트module-name/src/test/java/에 있으며 컴퓨터의 로컬 자바 가상 머신(JVM)에서 실행됩니다. 테스트에 Android 프레임워크 종속 항목이 없거나 Android 프레임워크 종속 항목용 테스트 더블을 생성할 수 있는 경우 로컬 단위 테스트를 사용하면 실행 시간을 최소화할 수 있습니다. 로컬 단위 테스트를 작성하는 방법에 관한 자세한 내용은 로컬 단위 테스트 빌드를 참고하세요.

계측 테스트$module-name/src/androidTest/java/에 있으며 하드웨어 기기나 에뮬레이터에서 실행됩니다. 계측 테스트에서는 Instrumentation API를 사용하여 테스트 중인 앱의 Context 클래스 같은 정보에 액세스하고 테스트 대상 앱을 테스트 코드에서 제어할 수 있습니다. 계측 테스트는 별도의 APK에 빌드되므로 자체 AndroidManifest.xml 파일이 있습니다. 이 파일은 자동으로 생성되지만 $module-name/src/androidTest/AndroidManifest.xml에서 직접 개발자의 버전을 만들 수도 있으며, 만든 파일은 생성된 매니페스트와 병합됩니다. 사용자 상호작용을 자동화하는 통합 및 기능적 UI 테스트를 작성하는 경우 또는 테스트 더블을 만들 수 없는 Android 종속 항목이 테스트에 있는 경우 계측 테스트를 사용합니다. 계측 테스트 작성 방법에 관한 자세한 내용은 계측 테스트 빌드UI 테스트 자동화를 참고하세요.

빌드 변형별 디렉터리에 테스트를 배치하여 특정 빌드 변형만 테스트할 수 있습니다. 예를 들어 일부 로컬 단위 테스트를 $module-name/src/testMyFlavor/java/에 배치하여 테스트가 이 버전의 소스 코드로 빌드된 앱을 타겟팅하도록 할 수 있습니다. 이러한 맞춤 테스트를 만드는 방법에 관한 자세한 내용은 빌드 변형의 계측 테스트 작성을 참고하세요.

새 프로젝트를 만들거나 앱 모듈을 추가하면 Android 스튜디오에서 앞서 제시된 테스트 소스 세트를 생성하고 각 세트에 예제 테스트 파일을 포함합니다. 그림 2에 표시된 것처럼 Project 창에서 이를 확인할 수 있습니다.

그림 2. 프로젝트의 (1) 계측 테스트 및 (2) 로컬 JVM 테스트가 Project 뷰(왼쪽)나 Android 뷰(오른쪽)에 표시됩니다.

새 테스트 만들기

다음 단계에 따라 소스 코드에서 직접 특정 클래스나 메서드의 새로운 테스트를 추가할 수 있습니다.

  1. 테스트할 코드가 포함된 소스 파일을 엽니다.
  2. 테스트할 클래스나 메서드 이름에 커서를 놓은 다음 Control+Shift+T(macOS에서는 command+shift+T)를 누릅니다.
  3. 팝업이 표시되면 Create New Test…를 클릭합니다.
  4. Create Test 대화상자에서 JUnit4를 선택하고 생성할 필드와 메서드를 수정한 후 OK를 클릭합니다.
  5. Choose Destination Directory 대화상자에서 생성하려는 테스트 유형에 해당하는 소스 세트를 클릭합니다. 계측 테스트의 경우 androidTest를, 로컬 단위 테스트의 경우 test를 클릭합니다. 그런 다음 OK를 클릭합니다.

또는 다음과 같이 적합한 테스트 소스 세트에서 일반 테스트 파일을 생성할 수도 있습니다.

  1. 왼쪽의 Project 창에서 드롭다운 메뉴를 클릭하고 Android 뷰를 선택합니다.
  2. Java 디렉터리를 마우스 오른쪽 버튼으로 클릭하고 New > Java Class 또는 New > Kotlin Class/File을 선택합니다. 또는 Java 디렉터리를 선택하고 Control+N(macOS에서는 command+N) 단축키를 사용할 수 있습니다.
  3. Choose Destination Directory 대화상자에서 생성하려는 테스트 유형에 해당하는 소스 세트를 클릭합니다. 계측 테스트의 경우 androidTest를, 로컬 단위 테스트의 경우 test를 클릭합니다. 그런 다음 OK를 클릭합니다.
  4. 파일의 이름을 지정한 후 OK를 클릭합니다.

테스트를 추가한 후에 앱이 컴파일되지 않으면 올바른 테스트 라이브러리 종속 항목이 설정되었는지 확인합니다. 올바른 종속 항목은 로컬 테스트 빌드계측 테스트 빌드를 참고하세요.

테스트 실행

테스트를 실행하기 전에 툴바에서 Sync Project 를 클릭하여 프로젝트가 Gradle과 완전히 동기화되었는지 확인합니다. 서로 다른 수준의 세부사항으로 테스트를 실행할 수 있습니다.

  • 디렉터리나 파일의 모든 테스트를 실행하려면 Project 창을 열고 다음 중 하나를 실행하세요.

    • 디렉터리나 파일을 마우스 오른쪽 버튼으로 클릭하고 Run 을 클릭합니다.
    • 디렉터리나 파일을 선택하고 단축키 Control+Shift+R을 사용합니다.
  • 클래스나 특정 메서드의 모든 테스트를 실행하려면 코드 편집기에서 테스트 파일을 열고 다음 중 하나를 실행하세요.

    • 여백에 있는 Run test 아이콘 을 누릅니다.
    • 테스트 클래스나 메서드를 마우스 오른쪽 버튼으로 클릭하고 Run 을 클릭합니다.
    • 테스트 클래스나 메서드를 선택하고 단축키 Control+Shift+R을 사용합니다.

계측 테스트는 실제 기기나 에뮬레이터에서 실행됩니다. 실제 기기 설정에 관한 자세한 내용은 하드웨어 기기에서 앱 실행을 참고하세요. 에뮬레이터 설정에 관한 자세한 내용은 Android Emulator에서 앱 실행을 참고하세요.

테스트 실행 구성

기본적으로 테스트는 Android 스튜디오의 기본 실행 구성을 사용하여 실행됩니다. 계측 실행기 및 배포 옵션과 같은 일부 실행 설정을 변경하려는 경우 Run/Debug Configurations 대화상자(Run > Edit Configurations 클릭)에서 실행 구성을 수정하면 됩니다.

통합 Gradle 테스트 실행기

Android Gradle 플러그인 7.1.0 및 Android 스튜디오 Bumblebee 이상은 Gradle의 자체 Android 계측 테스트 실행기 구현을 사용하여 계측 테스트를 실행합니다. 같은 테스트 실행기를 사용하면 명령줄에서 AGP를 사용하여 실행할 때와(예: 지속적 통합 서버에서 실행) Android 스튜디오에서 실행할 때 모두 일관된 결과를 얻을 수 있습니다.

그림 3. 통합 Gradle 테스트 실행기

이전 버전의 Android 스튜디오는 Gradle의 Android 계측 테스트 실행기가 아닌 IntelliJ Android 계측 테스트 실행기를 사용합니다. 따라서 최신 버전의 Android 스튜디오를 사용하는 것이 아니라면 테스트를 Android 스튜디오에서 실행하는지, 아니면 Gradle 플러그인을 사용하여 명령줄에서 실행하는지에 따라 다른 테스트 결과가 표시될 수 있습니다. 예를 들어 한 실행기에서는 테스트에 통과하였으나 다른 실행기에서는 실패할 수 있습니다.

그림 4. 이전 버전 Android 스튜디오의 분리 테스트 실행기

프로젝트에 저장해 둔 계측 테스트 구성이 있다면 이 구성은 Gradle을 사용하여 연결된 기기에서 테스트를 실행합니다. 아래와 같이 테스트 클래스 또는 메서드 옆의 여백 작업을 사용하여 새 계측 테스트 구성을 만들 수 있습니다.

그림 5. 여백 작업에서 테스트 실행

계측 테스트를 실행할 때 Gradle 작업 출력의 Test Matrix에서 테스트 출력을 조사하여 Android 스튜디오에서 Gradle 테스트 실행기를 사용 중인지 확인할 수 있습니다.

통합 Gradle 테스트 실행기 사용 중지

기본적으로 Android 스튜디오 Bumblebee는 Gradle로 계측 테스트를 실행합니다. 문제가 발생할 경우 다음 단계에 따라 이 동작을 사용 중지할 수 있습니다.

  1. File > Settings > Build, Execution, Deployment > Testing(MacOS에서는 Android Studio > Preferences > Build, Execution, Deployment > Testing)을 선택합니다.
  2. Run Android instrumented tests using Gradle 옆의 체크박스를 선택 해제하고 OK를 클릭합니다.

Android 스튜디오 외부에서 테스트를 실행하는 경우 다음 중 한 가지 방법을 사용하여 이전 동작으로 되돌릴 수도 있습니다.

  • -Pandroid.experimental.androidTest.useUnifiedTestPlatform=false 명령줄 매개변수를 사용합니다.
  • 프로젝트의 gradle.properties 파일에 다음 매개변수를 추가합니다. android.experimental.androidTest.useUnifiedTestPlatform=false

문제를 해결하는 데 도움이 필요하면 버그를 신고하세요.

여러 기기에서 동시에 실행

계측 테스트는 기본적으로 실제 기기나 에뮬레이터 하나에서 실행됩니다. 다음 단계에 따라 기기를 여러 개 선택하여 다수의 기기에서 테스트가 어떻게 작동하는지 확인할 수 있습니다.

  1. 테스트를 실행하기 전에 대상 기기 드롭다운 메뉴를 열고 Select Multiple Devices…를 선택합니다.

    그림 6. Select Multiple Devices 드롭다운 메뉴

  2. 원하는 기기를 선택하고 OK를 클릭합니다.

  3. 대상 기기 드롭다운 메뉴의 텍스트가 Multiple Devices로 변경되었는지 확인하고 Run 을 클릭합니다.

  4. 선택한 기기 설정별로 테스트 매트릭스 도구 창에 테스트 결과가 표시됩니다.

    그림 7. 테스트 매트릭스 도구 창의 테스트 결과

  5. 특정 테스트를 클릭하여 출력 창에서 결과를 검사할 수 있습니다. 여러 열을 클릭하여 테스트를 정렬할 수도 있습니다.

Firebase Test Lab으로 실행

Firebase Test Lab을 사용하여 많이 사용되는 Android 기기 및 기기 설정(다양한 조합의 언어, 방향, 화면 크기, 플랫폼 버전)에서 동시에 앱을 테스트할 수 있습니다. 테스트는 원격 Google 데이터 센터에서 실제 기기와 가상 기기를 활용해 실행됩니다. 테스트 결과에는 테스트 로그와 앱 실패 세부정보가 포함됩니다.

다음 단계에 따라 Firebase Test Lab을 사용합니다.

  1. 아직 계정이 없다면 Google 계정을 만듭니다.
  2. Firebase Console에서 새 프로젝트 만들기를 클릭합니다. Spark 요금제의 무료 일일 할당량 이내라면 Test Lab에서 앱을 테스트하는 데 비용이 들지 않습니다.

Android 스튜디오에서는 Firebase Test Lab에 테스트를 배포하는 방법을 구성하는 통합 도구를 제공합니다. Firebase 프로젝트를 만든 후에 테스트 구성을 만들고 다음 단계에 따라 테스트를 실행할 수 있습니다.

  1. 기본 메뉴에서 Run > Edit Configurations를 클릭합니다.
  2. Add New Configuration 을 클릭하고 Android Instrumented Tests를 선택합니다.
  3. 테스트 이름, 모듈 유형, 테스트 유형 및 테스트 클래스와 같은 테스트 세부정보를 입력하거나 선택합니다.
  4. Deployment Target Options 아래의 Target 드롭다운 메뉴에서 Firebase Test Lab Device Matrix를 선택합니다.
  5. 로그인하지 않은 경우 Sign in with Google을 클릭하고 Android 스튜디오에서 계정에 액세스하도록 허용합니다.
  6. Cloud Project 옆의 목록에서 Firebase 프로젝트를 선택합니다.
  7. Matrix configuration 옆의 드롭다운에서 기본 구성 중 하나를 선택하거나 Open Dialog 를 눌러 자체 구성을 만듭니다. 앱을 테스트할 때 사용할 기기, Android 버전, 언어, 화면 방향을 하나 이상 선택할 수 있습니다. Firebase Test Lab이 테스트 결과 생성 시 선택한 모든 조합으로 앱을 테스트합니다.
  8. Run/Debug Configurations 대화상자에서 OK를 클릭하여 종료합니다.
  9. Run 을 클릭하여 테스트를 실행합니다.

그림 8. Firebase Test Lab의 테스트 구성 만들기

테스트 결과 분석

Firebase Test Lab이 테스트 실행을 완료하면 그림 9와 같이 Run 창이 열리고 결과가 표시됩니다. 실행된 모든 테스트를 보려면 Show Passed 를 클릭해야 할 수도 있습니다.

그림 9. Firebase Test Lab을 사용한 계측 테스트의 결과

Run 창에서 테스트 실행 로그의 시작 부분에 표시된 링크를 따라 웹에서 테스트를 분석할 수도 있습니다.

테스트 범위 보기

로컬 단위 테스트에 테스트 범위 도구를 사용하여 단위 테스트에서 다루는 앱 코드의 비율과 영역을 추적할 수 있습니다. 테스트 범위 도구를 사용하여 앱을 구성하는 요소, 클래스, 메서드, 코드 줄이 적절하게 테스트되었는지 확인하세요.

적용 범위로 테스트를 실행하려면 테스트 실행에서 설명하는 것과 동일한 단계를 따르되 Run 대신 Run test-name with coverage 를 클릭합니다. 이 옵션은 Project 창에서 More Run/Debug 뒤에 가려져 있을 수 있습니다. Run/Debug Configurations 대화상자의 Code Coverage 탭에서 적용 범위 설정을 구성할 수도 있습니다.

그림 10. 애플리케이션의 코드 적용 범위 비율

테스트 결과 보기

Android 스튜디오에서 하나 이상의 테스트를 실행하면 결과가 Run 창에 표시됩니다. 그림 11은 성공적인 테스트 실행을 보여줍니다.

그림 11. Run 창에 표시되는 테스트 결과

Run 창의 왼쪽에는 테스트가 트리 보기로 표시되고 오른쪽의 출력 창에는 현재 테스트 모음 관련 결과 및 메시지가 표시됩니다. 툴바, 컨텍스트 메뉴, 상태 아이콘을 다음과 같이 사용하여 테스트 결과를 관리합니다.

  1. 실행 툴바를 사용하여 현재 테스트 재실행 및 중지, 실패한 테스트 재실행(단위 테스트에서만 사용 가능하므로 표시되지 않음), 출력 일시중지, 스레드 덤프 작업을 할 수 있습니다.
  2. 테스트 툴바를 사용하여 테스트 결과를 필터링하고 정렬할 수 있습니다. 노드 확장 및 축소, 테스트 범위 표시, 테스트 결과 가져오기 및 내보내기 작업도 할 수 있습니다.
  3. 컨텍스트 메뉴를 클릭하면 실행 중인 테스트 추적, 인라인 통계 표시, 스택 트레이스로 스크롤, 예외 위치에서 소스 코드 열기, 소스로 자동 스크롤, 테스트 실행 완료 시 실패한 첫 번째 테스트 선택 등의 작업을 할 수 있습니다.
  4. 테스트 상태 아이콘은 테스트에 오류가 있는지 여부 및 무시, 실패, 진행 중, 통과, 일시중지, 종료, 실행 안 함과 같은 테스트 상태를 나타냅니다.
  5. 트리 보기에서 줄을 마우스 오른쪽 버튼으로 클릭하면 표시되는 컨텍스트 메뉴를 사용하여 디버그 모드로 테스트를 실행하거나, 테스트 소스 코드 파일을 열거나, 테스트 중인 소스 코드에서 특정 줄로 건너뛸 수 있습니다.

테스트 실패 분석

하나 이상의 테스트가 실패하면 결과 창에 경고 기호와 실패 횟수가 표시됩니다(예: 'Tests failed: 1').

그림 12. 출력 창에 표시된 실패한 테스트 세부정보

왼쪽의 트리 보기에서 실패한 테스트를 클릭하면 오른쪽 출력 창에 테스트 세부정보가 표시됩니다. 실제 값 옆에 예상 값이 표시되므로 비교해 볼 수 있습니다. Click to see difference 링크를 클릭하면 차이점 뷰어가 열리고 결과가 나란히 표시됩니다.

자세히 알아보기

이 페이지에서는 Android 스튜디오로 첫 번째 테스트를 만들고 실행하는 기본 단계를 다룹니다. 명령줄에서 테스트를 실행할 수도 있습니다. 테스트에 관한 IntelliJ 문서도 확인해 보세요. 대규모 테스트 모음 생성 시 테스트를 구성하는 방법에 관한 자세한 내용은 고급 테스트 설정을 참고하세요.