IT

Android Gradle의 testCompile 및 androidTestCompile에 대해 혼동에 대해

lottoking 2020. 9. 12. 10:25
반응형

Android Gradle의 testCompile 및 androidTestCompile에 대해 혼동에 대해


나는 테스트 세계에 익숙하지 않고 Android 테스트 세계에 더 익숙합니다. 안드로이드 테스트에 도움이되는 Robolectric에 대한 연구를하는 동안 가장 혼란스러운 점이 있습니다. 여기서 웹 testCompile에서 Robolectric을 참조 할 때 gradle 빌드 확장의 말씀에 키워드를 사용하는 것을 볼 수 androidTestCompile있습니다. 확실히 둘 다 유효 할 수 없습니까?

Robolectric을 사용할 때 둘 다의 차이점과 이들 중 어느 것이 사용되어야합니까?


단순히 testCompile단위 테스트의 구성 ( SRC / 테스트에 있음 )이며 androidTestCompile테스트 API ( SRC / androidTest에 있음 )에 사용됩니다. 단위 테스트를 수행 계획을 수행 testCompile합니다.

업데이트 : 둘 사이의 주요 차이점은 test소스 세트가 또는 일반 자바 JVM에서 androidTest실행 되는 반면 소스 세트 테스트는 안드로이드 기기 (또는 에뮬레이터)에서 실행된다는 것입니다.


질문에 답 생각 -robolectric에 testCompile

왜, robolectric은 모든 안드로이드 장치 동작을 조롱하는 JVM에서 실행되기 때문입니다.

testCompile은 Android 및 android에서 제공하는 작업을 실행하는 동안 gradle이 사용하는 "일반적인"Android 폴더입니다.

androidTestDebug는 androidTest 폴더에서 테스트를 선택하고 testDebug는 테스트 폴더에서 테스트를 선택합니다.

다시 이것들은 관례에 앞서 만 구현 된 구성에 대한 소스 세트를 제공 할 수 있습니다.

참고 : 에스프레소는 robolectric에서 벗어나려고하는 멋진 라이브러리입니다. :)


// 단위 테스트

testCompile 'junit:junit:4.12'

위 코드는 android studio의 build.gradle 파일에있는 JUnit 4의 파일입니다. JUnit이 JVM에서 실행되고 실행되는 데 장치 또는 에뮬레이터가 필요하지 않으므로 testCompile이 있음을 알 수 있습니다. 이는 또한 JUnit이 테스트를 실행하는 데 필요한 경우 "MOCK"이 필요함을 의미합니다.

// 구조화 된 단위 테스트

androidTestCompile('com.android.support.test:runner:0.5', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

이제 여기에 androidTestCompile이 표시됩니다. 이번에는 테스트에 기기 또는 에뮬레이터를 사용하려고하기 때문에 계측 테스트입니다. 더 명확한 설명을 위해 developer.android.com에서 읽는 것이 좋습니다.


JVM 테스트 또는 단위 테스트에 대한 추가 비용 (테스트는 Java 환경에만 필요하지 않음).

testCompile 지시문을 사용합니다. 예 :

dependencies {
    testCompile gradleTestKit()
}

계측 테스트에 대한 사용을 추가하기 위해 (이 테스트는 주로 Android 환경에 의존) androidTestCompile지시문 을 사용합니다 .

참고 URL : https://stackoverflow.com/questions/29021331/confused-about-testcompile-and-androidtestcompile-in-android-gradle

반응형