Gradle을 사용하는 Android에서 JUnit을 사용한 단위 테스트

Serenskye

Android 프로젝트에서 Java 코드를 테스트하기 위해 Junit 테스트를 설정하려고합니다. Gradle 빌드에서 작동하지 않는 것 같습니다.

지금은 하나의 테스트를 예로 설정했습니다. 내 프로젝트는 Gradle을 사용하기 위해 이식 한 레거시이므로 파일을 새 디렉터리 형식으로 이동하는 대신 소스 세트와 구조를 정의했습니다.

빌드를 실행하거나 UnitTest를 실행하면 출력이 Build Successful이되지만 실제로 테스트 단위 테스트를 실행하지는 않았습니다. Android 스튜디오는 파일을 java로 인식하지 않는 것 같으며 ExampleTest.java 파일에 오류 / 코드 완성을 표시하지 않습니다.

Project
  -> Module
     -> assets
     -> build
     -> gen
     -> libs
     -> res
     -> src
     -> tests

내 gradle 빌드 파일 :

    buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://repo1.maven.org/maven2' }
        maven { url 'http://download.crashlytics.com/maven' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:+'
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
    }
}

apply plugin: 'android'
apply plugin: 'crashlytics'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 20
    buildToolsVersion '20.0.0'


    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 20
        versionCode 47
        versionName '2.1'

    }
    buildTypes {
        release {
            runProguard true
            zipAlign true
            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
            proguardFile 'proguard-project.txt'
        }
        debug {
            runProguard false
        }
    }

    productFlavors {
        defaultFlavor {
            proguardFile 'proguard-project.txt'
        }
    }

    signingConfigs {
        debug {
            storeFile file('../debug.keystore')
        }

        release {
            storeFile file("XX")
            storePassword "XX"
            keyAlias "XX"
            keyPassword "XX"
        }
    }

    sourceSets {

        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']

        }

        unitTest {
            java.srcDir file('tests')
            resources.srcDir file('test/resources')
        }

    }
}


sourceSets {
    unitTest {
        java.srcDir file('test')
        resources.srcDir file('test/resources')
    }
}

dependencies {
    compile 'com.viewpagerindicator:library:2.4.1@aar'
    compile 'com.crashlytics.android:crashlytics:1.+'
    unitTestCompile 'junit:junit:4.1+'
    unitTestCompile files("$buildDir/intermediates/classes/debug")
}


configurations {
    unitTestCompile.extendsFrom runtime
    unitTestRuntime.extendsFrom unitTestCompile
}

task unitTest(type:Test, dependsOn: assemble) {
    description = "run unit tests"
    testClassesDir = project.sourceSets.unitTest.output.classesDir
    classpath = project.sourceSets.unitTest.runtimeClasspath
}


// bind to check
build.dependsOn unitTest
총독

gradle 스크립트에 다음을 수행하십시오. 이렇게하면 JVM 내에서 테스트를 실행할 수 있으므로 에뮬레이터를 실행하거나 기기에서 테스트를 실행할 필요가 없습니다.

상단 :

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.robolectric:robolectric-gradle-plugin:0.12.+'
    }
}

새 플러그인 :

apply plugin: 'robolectric'

그리고 바닥 근처 :

robolectric {

    //configure the set of classes for JUnit tests
    include '**/*Test.class'

    //configure whether failing tests should fail the build
    ignoreFailures false

}

그리고 다음 종속성을 추가하십시오.

androidTestCompile ('junit:junit:4.11')
androidTestCompile ('org.robolectric:robolectric:2.3') {
    exclude module: 'classworlds'
    exclude module: 'maven-artifact'
    exclude module: 'maven-artifact-manager'
    exclude module: 'maven-error-diagnostics'
    exclude module: 'maven-model'
    exclude module: 'maven-plugin-registry'
    exclude module: 'maven-profile'
    exclude module: 'maven-project'
    exclude module: 'maven-settings'
    exclude module: 'nekohtml'
    exclude module: 'plexus-container-default'
    exclude module: 'plexus-interpolation'
    exclude module: 'plexus-utils'
    exclude module: 'wagon-file'
    exclude module: 'wagon-http-lightweight'
    exclude module: 'wagon-http-shared'
    exclude module: 'wagon-provider-api'
    exclude group: 'com.android.support', module: 'support-v4'
}

그런 다음 테스트 폴더에 테스트 작성을 시작하십시오. 보시다시피 Test.class로 시작하는 클래스 만 테스트 스위트에 포함되도록 필터를 설정했습니다. 이러한 테스트 클래스에 다음 주석을 추가해야합니다. (작성된 내용과 다를 수 있으므로 매니페스트 파일의 URL을 변경해야합니다.)

@RunWith(RobolectricTestRunner.class)
@Config(manifest = "./src/main/AndroidManifest.xml", emulateSdk = 18)
class FirstTest {
    // tests go here
}

마지막으로 ./gradlew test로 테스트를 실행합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android Studio 및 Gradle을 사용한 단위 테스트?

분류에서Dev

Junit을 사용한 단위 테스트에서 저장된 파일의 경로

분류에서Dev

Owin을 사용하는 WebApi에 대한 C # 단위 테스트 프로젝트

분류에서Dev

powermock을 사용한 정적 메서드 단위 테스트

분류에서Dev

powermock을 사용한 정적 메서드 단위 테스트

분류에서Dev

Groovy, JUnit 및 Maven을 사용한 단위 테스트에서 예외를 "예상"한다고 선언하는 방법은 무엇입니까?

분류에서Dev

계측 단위 테스트에서 파일을 사용하는 방법

분류에서Dev

robolectric을 사용한 단위 테스트에서 NoSuchMethodException 오류가 발생 함

분류에서Dev

목록을 인수로 사용하는 메서드 단위 테스트

분류에서Dev

diff 및 make를 사용하는 대신 Cabal을 사용하는 간단한 단위 테스트

분류에서Dev

Mock을 사용하여 C #에서 업데이트 방법에 대한 단위 테스트

분류에서Dev

JSDom을 사용하여 Jest에서 사용자 정의 요소에 대한 단위 테스트를 수행하는 방법

분류에서Dev

Android : 코 루틴을 사용한 비정상적인 ViewModel 단위 테스트

분류에서Dev

Jasmine을 사용하는 API의 단위 테스트 약속

분류에서Dev

sinon을 사용하여 단위 테스트에서 Mongoose 모델 메서드를 스텁하는 방법

분류에서Dev

한 단위 테스트에서 다른 사용자가 사용할 수있는 값을 설정하는 방법이 있습니까?

분류에서Dev

JUnit 테스트를 위해 Android Marshmallow에서 권한을 요청하는 방법

분류에서Dev

SQLAlchemy 앱의 단위 테스트에서 Alembic을 사용하십니까?

분류에서Dev

Mockito를 사용한 Android 단위 테스트 : 모의에 대한 올바른 동작을 얻을 수 없음

분류에서Dev

단위 테스트에서 NestJS 트랜잭션 코드와 함께 jest.spyOn을 사용하는 방법

분류에서Dev

Gradle을 사용하여 하나의 단위 테스트 클래스 만 실행하는 방법

분류에서Dev

단위 테스트에서 get ()을 사용할 때 null을 제공하는 명명 된 쿼리를 grails

분류에서Dev

어떻게 Gradle을에서 JUnit을 5 JUnit 4에서는 테스트 스위트를 실행하려면?

분류에서Dev

단위 테스트에 유용하도록 구성 요소와 함께 번역을 사용하는 방법

분류에서Dev

Laravel assertDatabaseHas 및 부동 열을 사용한 단위 테스트

분류에서Dev

boost :: multiprecision을 사용한 단위 테스트

분류에서Dev

redis-mock을 사용한 Nodejs 단위 테스트 결과 ECONNREFUSED

분류에서Dev

@input을 사용한 단위 테스트 각도 구성 요소

분류에서Dev

Python을 사용한 BigQuery 단위 테스트

Related 관련 기사

  1. 1

    Android Studio 및 Gradle을 사용한 단위 테스트?

  2. 2

    Junit을 사용한 단위 테스트에서 저장된 파일의 경로

  3. 3

    Owin을 사용하는 WebApi에 대한 C # 단위 테스트 프로젝트

  4. 4

    powermock을 사용한 정적 메서드 단위 테스트

  5. 5

    powermock을 사용한 정적 메서드 단위 테스트

  6. 6

    Groovy, JUnit 및 Maven을 사용한 단위 테스트에서 예외를 "예상"한다고 선언하는 방법은 무엇입니까?

  7. 7

    계측 단위 테스트에서 파일을 사용하는 방법

  8. 8

    robolectric을 사용한 단위 테스트에서 NoSuchMethodException 오류가 발생 함

  9. 9

    목록을 인수로 사용하는 메서드 단위 테스트

  10. 10

    diff 및 make를 사용하는 대신 Cabal을 사용하는 간단한 단위 테스트

  11. 11

    Mock을 사용하여 C #에서 업데이트 방법에 대한 단위 테스트

  12. 12

    JSDom을 사용하여 Jest에서 사용자 정의 요소에 대한 단위 테스트를 수행하는 방법

  13. 13

    Android : 코 루틴을 사용한 비정상적인 ViewModel 단위 테스트

  14. 14

    Jasmine을 사용하는 API의 단위 테스트 약속

  15. 15

    sinon을 사용하여 단위 테스트에서 Mongoose 모델 메서드를 스텁하는 방법

  16. 16

    한 단위 테스트에서 다른 사용자가 사용할 수있는 값을 설정하는 방법이 있습니까?

  17. 17

    JUnit 테스트를 위해 Android Marshmallow에서 권한을 요청하는 방법

  18. 18

    SQLAlchemy 앱의 단위 테스트에서 Alembic을 사용하십니까?

  19. 19

    Mockito를 사용한 Android 단위 테스트 : 모의에 대한 올바른 동작을 얻을 수 없음

  20. 20

    단위 테스트에서 NestJS 트랜잭션 코드와 함께 jest.spyOn을 사용하는 방법

  21. 21

    Gradle을 사용하여 하나의 단위 테스트 클래스 만 실행하는 방법

  22. 22

    단위 테스트에서 get ()을 사용할 때 null을 제공하는 명명 된 쿼리를 grails

  23. 23

    어떻게 Gradle을에서 JUnit을 5 JUnit 4에서는 테스트 스위트를 실행하려면?

  24. 24

    단위 테스트에 유용하도록 구성 요소와 함께 번역을 사용하는 방법

  25. 25

    Laravel assertDatabaseHas 및 부동 열을 사용한 단위 테스트

  26. 26

    boost :: multiprecision을 사용한 단위 테스트

  27. 27

    redis-mock을 사용한 Nodejs 단위 테스트 결과 ECONNREFUSED

  28. 28

    @input을 사용한 단위 테스트 각도 구성 요소

  29. 29

    Python을 사용한 BigQuery 단위 테스트

뜨겁다태그

보관