Gradle Plugin 테스트/커버리지 환경 구축 및 개밥

최근 Android 앱 커버리지를 자동으로 확인하는 Gradle 플러그인을 썼는데 커버리지를 확인하는 플러그인에도 불구하고 플러그인 자신의 커버리지가 이라는 참혹한 상황이었기 때문에 테스트/커버리지 환경을 구축해 보았습니다. .
Groovy에서 테스트 코드를 작성하는 것은 처음이었습니다.

테스트 정보



환경 구축



우선 다음과 같은 디렉토리 구성으로 하는 것만으로 OK였습니다.
src
 |-- main
 |    |-- groovy/{{packageName}} 
 |-- test
      |-- groovy/{{packageName}} # テストコードdir

실제 디렉토리

테스트 코드 & 실행 & 결과



Groovy라고 하면 원조 PowerAssert라고 하는 것으로(확실히), 이하와 같은 테스트 코드를 써 실행하면, PowerAssert인 결과를 표시해 줍니다.
class ShikatoTest {

    @Test
    void sum1() {
        def expected = 2;
        assert 1 + 1 == expected;
    }

    @Test
    void sum2() {
        // あえて失敗させる
        def expected = 2;
        assert 1 + 2 == expected;
    }
}

실행
# --infoオプションをつけないとコンソール上でPowerAssertな結果は表示してくれなかった
#(--infoなくてもhtmlレポート上ではPowerAssertな結果を表示してくれる)
./gradlew test --info



HTML 보고서
# 以下に出力されるはず
build/reports/tests/index.html 



좋은 느낌이네요

커버리지 정보



JaCoCo



테스트를 작성하기 위한 환경이 생겼으므로, 다음은 커버리지를 계측할 수 있도록 해 보겠습니다.
측정에 JaCoCo을 사용했습니다.
JaCoCo를 선택한 이유는 다음 3가지입니다.
  • Gradle 표준으로 플러그인이 제공됩니다.
  • Android Gradle Plugin에서도 지원됨

  • AndroidCoverageCheck 플러그인에서 개밥을 할 수 있었기 때문에

  • 세번째에 관해서는 나중의 항목으로 건드립니다.

    환경 구축



    위에서 언급했듯이 Gradle의 표준으로 플러그인이 준비되어 있으므로 다음과 같이 선언하는 것만으로 사용할 수 있습니다.

    build.gradle
    apply plugin: 'jacoco'
    

    또한 이번에는 XML 보고 기능을 활성화합니다(AndroidCoverageCheck 플러그인에서 사용하기 위해).

    build.gradle
    jacocoTestReport {
        reports {
            xml.enabled = true
        }
    }
    

    실제 build.gradle

    실행



    실행
    # レポートを生成するだけならjacocoTestReportタスクのみでOK
    ./gradlew test jacocoTestReport 
    

    결과



    HTML 보고서
    # 出力先を変更していなければ以下に出力されるはず
    build/reports/jacoco/test/html/index.html 
    



    좋은 느낌이네요

    AndroidCoverageCheck 플러그인의 개 푸딩 정보



    자신의 앱으로 독 푸딩하는 것은 물론입니다만, AndroidCoverageCheck 플러그인 자신의 개발에서도 독 푸딩 할 수 있는 것에 넘어선 적이 없기 때문에, 그 설정을 했습니다.

    AndroidCoverageCheck 플러그인 설정



    XML 보고서의 기본 출력 대상이 Android Gradle Plugin에서 JaCoCo를 사용했을 때와 다르므로 다음과 같이 지정했습니다.

    build.gradle
    String[] reportXmlPath = ["**/jacoco/**/jacocoTestReport.xml"];
    
    androidCoverageCheck {
        isBuildFailure false
        instruction 80
        branch 80
        reportXml reportXmlPath
    }
    

    실제 build.gradle
    AndroidCoverageCheck 플러그인에 대한 자세한 배포 지침은 여기을 참조하십시오.

    실행



    실행
    # テストとカバレッジレポート生成とカバレッジチェックを実行
    ./gradlew test jacocoTestReport androidCoverageCheck
    

    결과





    좋은 느낌이네요
    (아직 꽤 빨간색이지만 일단이 기사에서는 환경을 구축하는 곳까지하고 있기 때문에 앞으로 기대됩니다 )

    사이고에게



    우선, 테스트/커버리지 환경을 구축할 수 있었으므로, 독 푸딩하면서 테스트를 늘려 가면 좋겠습니다

    좋은 웹페이지 즐겨찾기