Skip to content

Most visited

Recently visited

navigation

앱 테스트

Android Studio는 테스트 작업을 간단하게 수행할 수 있도록 설계되었습니다. 몇 번의 클릭만으로 로컬 JVM에서 실행되는 JUnit 테스트나 기기에서 실행되는 계측 테스트를 설정할 수 있습니다. 물론, 로컬 단위 테스트에서 Android API 호출을 테스트하는 Mockito 및 계측 테스트에서 사용자 상호작용을 시험하는 Espresso 또는 UI Automator를 통합하여 테스트 기능을 확장할 수도 있습니다. Espresso Test Recorder를 사용하여 Espresso 테스트를 자동으로 생성할 수 있습니다.

이 페이지에서는 Android Studio에서 새 테스트를 앱에 추가하고 이를 실행하는 방법에 대한 기본적인 정보를 제공합니다.

테스트를 작성하는 방법에 대한 전체 지침은 테스트 시작하기를 참조하세요.

테스트 유형 및 위치

테스트 코드의 위치는 작성하는 테스트의 유형에 따라 결정됩니다. Android Studio에서는 다음과 같은 두 가지 테스트 유형에 대한 소스 코드 디렉토리(소스 세트)를 제공합니다.

로컬 단위 테스트

위치: module-name/src/test/java/.

컴퓨터의 로컬 JVM(Java Virtual Machine)에서 실행되는 테스트입니다. 테스트에 Android 프레임워크 종속성이 없거나 Android 프레임워크 종속성에 대한 모의 객체를 생성할 수 있는 경우 이 테스트를 사용하면 실행 시간을 최소화할 수 있습니다.

런타임에 이 테스트는 모든 final 한정자가 삭제된, 수정된 버전의 android.jar에 대해 실행됩니다. 여기서는 Mockito와 같이 흔히 사용되는 모의 라이브러리를 사용할 수 있습니다.

계측 테스트

위치: module-name/src/androidTest/java/.

하드웨어 기기나 에뮬레이터에서 실행되는 테스트입니다. 이 테스트에서는 Instrumentation API에 액세스할 수 있으며, 테스트하는 앱의 Context 와 같은 정보에 대한 액세스 권한을 개발자에게 제공하고, 개발자는 테스트 코드에서 테스트되는 앱을 제어할 수 있습니다. 사용자 상호작용을 자동화하는 통합 및 기능적 UI 테스트를 작성하거나 테스트에 모의 객체가 충족할 수 없는 Android 종속성이 있는 경우 이 테스트를 사용합니다.

계측 테스트는 APK(앱 APK와는 별개임)로 빌드되므로 자체 AndroidManifest.xml 파일을 가져야 합니다. 하지만, Gradle이 빌드 과정에서 이 파일을 자동으로 생성하므로 프로젝트 소스 세트에는 표시되지 않습니다. `minSdkVersion`에 다른 값을 지정하거나 테스트 전용 실행 리스너를 등록하는 등과 같이 필요한 경우 자체 매니페스트 파일을 추가할 수 있습니다. 앱을 빌드하면 Gradle이 여러 매니페스트 파일을 하나의 매니페스트 파일로 병합합니다.

Gradle 빌드는 개발자 프로젝트의 앱 소스 세트에 수행하는 것과 동일한 방식으로 이러한 테스트 소스 세트를 해석합니다. 따라서 개발자는 빌드 변형을 기반으로 테스트를 생성할 수 있습니다.

새 프로젝트를 생성하거나 앱 모듈을 추가하면 Android Studio가 위에 나열되어 있는 테스트 소스 세트를 생성하고 각 테스트 소스 세트에 예제 테스트 파일을 포함합니다. 그림 1에 표시된 것처럼 Project 창에서 이들 항목을 확인할 수 있습니다.

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

새 테스트 추가

로컬 단위 테스트 또는 계측 테스트를 생성하려면 다음 단계에 따라 특정 클래스 또는 메서드에 대한 새 테스트를 생성합니다.

  1. 테스트할 코드를 포함하는 Java 파일을 엽니다.
  2. 테스트하려는 클래스 또는 메서드를 클릭한 후 Ctrl+Shift+T(⇧⌘T)를 누릅니다.
  3. 나타나는 메뉴에서 Create New Test를 클릭합니다.
  4. Create Test 대화상자에서 필드를 편집하고 생성할 메서드를 선택한 후 OK를 클릭합니다.
  5. Choose Destination Directory 대화상자에서 생성하려는 테스트 유형에 해당하는 소스 세트를 클릭합니다. 계측 테스트를 생성하려는 경우 androidTest , 로컬 단위 테스트를 생성하려는 경우 test를 클릭합니다. 그런 다음 OK를 클릭합니다.

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

  1. 왼쪽에 있는 Project 창에서 드롭다운 메뉴를 클릭하고 Project 뷰를 선택합니다.
  2. 적합한 모듈 폴더와 이에 중첩된 src 폴더를 확장합니다. 로컬 단위 테스트를 추가하려면 test 폴더와 이에 중첩된 java 폴더를 확장하고, 계측 테스트를 추가하려면 androidTest 폴더와 이에 중첩된 java 폴더를 확장합니다.
  3. Java 패키지 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 New > Java Class를 선택합니다.
  4. 파일의 이름을 지정한 후 OK를 클릭합니다.

또한, 다음과 같이 앱 모듈의 build.gradle 파일에 테스트 라이브러리 종속성도 지정해야 합니다.

dependencies {
    // Required for local unit tests (JUnit 4 framework)
    testCompile 'junit:junit:4.12'

    // Required for instrumented tests
    androidTestCompile 'com.android.support:support-annotations:24.0.0'
    androidTestCompile 'com.android.support.test:runner:0.5'
}

기타 선택적인 라이브러리 종속성과 테스트를 작성하는 방법에 대한 자세한 내용은 로컬 단위 테스트 빌드계측 단위 테스트 빌드를 참조하세요.

빌드 변형에 대한 계측 테스트 생성

프로젝트에 고유한 소스 세트를 갖는 빌드 변형이 포함되어 있는 경우 해당 계측 테스트 소스 세트가 필요할 수 있습니다. 빌드 변형에 해당하는 소스 세트에 계측 테스트를 생성하면 테스트 코드를 체계적으로 유지하고 특정 빌드 변형에 적용되는 테스트만 실행할 수 있습니다.

빌드 변형에 대한 테스트 소스 세트를 추가하려면 다음 단계를 따르세요.

  1. 왼쪽에 있는 Project 창에서 드롭다운 메뉴를 클릭하고 Project 뷰를 선택합니다.
  2. 적합한 모듈 폴더 내에 있는 src 폴더를 마우스 오른쪽 버튼으로 클릭하고 New > Directory를 클릭합니다.
  3. 디렉토리 이름으로 "androidTestVariantName"을 입력합니다. 예를 들어, "MyFlavor"라고 하는 빌드 변형이 있는 경우 디렉토리 이름은 "androidTestMyFlavor"여야 합니다. 그런 다음 OK를 클릭합니다.
  4. 새 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 New > Directory를 클릭합니다.
  5. 디렉토리 이름으로 "java"를 입력한 후 OK를 클릭합니다.

이제, 위에 나와 있는 새 테스트 추가 단계에 따라 이 새로운 소스 세트에 대한 테스트를 추가할 수 있습니다. Choose Destination Directory 대화상자에 도달하면 새로 생성한 변형 테스트 소스 세트를 선택합니다.

src/androidTest/ 소스 세트에 포함된 계측 테스트는 모든 빌드 변형에서 공유됩니다. 앱의 "MyFlavor" 변형에 대한 테스트 APK를 빌드하는 경우 Gradle이 src/androidTest/src/androidTestMyFlavor/ 소스 세트를 모두 결합합니다.

예를 들어, 다음 표에서는 계측 테스트 파일이 저장되는 소스 세트가 앱의 코드 소스 세트에 어떤 식으로 대응되는지를 보여줍니다.

앱 클래스 경로 일치하는 계측 테스트 클래스 경로
src/main/java/Foo.java src/androidTest/java/AndroidFooTest.java
src/myFlavor/java/Foo.java src/androidTestMyFlavor/java/AndroidFooTest.java

앱 소스 세트와 마찬가지로, Gradle 빌드는 다양한 테스트 소스 세트의 파일도 병합하고 재정의합니다. 이 경우, "androidTestMyFlavor" 소스 세트의 AndroidFooTest.java 파일이 "androidTest" 소스 세트의 버전을 재정의합니다. 소스 세트가 병합되는 방식에 대한 자세한 내용은 빌드 구성을 참조하세요.

앱 소스 세트 및 테스트 소스 세트에 대해 빌드 변형을 사용해야 하는 또 다른 이유는 모의 종속성을 통해 밀폐 테스트를 생성하기 위해서입니다. 즉, 종속성에 대한 모조 구현(예: 네트워크 요청 또는 일반적으로 취약한 기기 센서 데이터)이 포함된 앱의 제품 버전을 생성한 후 이에 해당하는 모의 테스트 소스 세트를 추가할 수 있습니다. 자세한 내용은 밀폐 테스트에 제품 버전 활용에 대해 설명하는 블로그 게시물을 참조하세요.

테스트 실행

테스트를 실행하려면 다음 단계를 진행하세요.

  1. 툴바에서 Sync Project 를 클릭하여 프로젝트가 Gradle과 동기화되는지 확인합니다.
  2. 다음 방법 중 하나로 테스트를 실행합니다.
    • Project 창에서 테스트를 마우스 오른쪽 버튼으로 클릭하고 Run 을 클릭합니다.
    • 클래스의 모든 메서드를 테스트하려면 코드 편집기에서 테스트 파일에 있는 클래스 또는 메서드를 마우스 오른쪽 버튼으로 클릭하고 Run 을 클릭합니다.
    • 모든 테스트를 실행하려면 테스트 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 Run tests 를 클릭합니다.

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

테스트 빌드 유형 변경

기본적으로 모든 테스트는 특정 디버그 빌드 유형에 대해 실행됩니다. 모듈 수준의 build.gradle 파일에서 testBuildType 속성을 사용하여 이 빌드 유형을 다른 빌드 유형으로 변경할 수 있습니다. 예를 들어, "스테이징(staging)" 빌드 유형에 대해 테스트를 실행하려면 다음 스니펫에 표시된 대로 파일을 편집합니다.

android {
    ...
    testBuildType "staging"
}
This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)