2013-06-18 5 views
17

저는 gradle 및 Android Studio를 처음 사용하고 있으며 테스트를 실행하는 방법을 알아 내려고하고 있습니다. 나는 http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing의 지침을 따랐고 Instrument Tests를 실행할 수 있었지만 /gradlew connectedInstrumentTest 만 실행했습니다. 내 앱에서 코드를 실행하지 않는 다른 check 작업을 이해하는 데 문제가 있습니다. 이 ./gradlew tasks printsGradle Android 테스팅

... 
Verification tasks 
------------------ 
check - Runs all checks. 
connectedCheck - Runs all device checks on currently connected devices. 
connectedInstrumentTest - Installs and runs the tests for Build 'Debug' on connected devices. 
deviceCheck - Runs all device checks using Device Providers and Test Servers. 
... 

실행 모든 검사를 check 있다면 ... 그것이 내가 connectedInstrumentTest에서 얻을 것들을 실행하지 않아야 무엇인가?

또한 Android 환경이 필요없는 테스트를 어떻게 실행할 수 있습니까? 나는 그들을/test/java 밑에 두어야합니까? 그렇다면 실행을 위해 어떤 명령을 실행해야합니까?

죄송합니다. 이러한 질문이 매우 분명해 보이지만 문서에서 다음 질문에 대한 답변을 찾을 수 없었습니다.

감사합니다.

편집 : 그래서 여기에 몇 가지 진전을

. check 님은 아무 것도하지 않는 것 같습니다. check에 종속 작업을 추가하여 일부 JUnit 테스트를 실행하는 것은 개발자에게 달려 있습니다 (지금 당장). 작업을 만들고, 소스를 찾고, 컴파일하고, 실행해야합니다.

connectedCheckconnectedInstrumentTest : 기기에서 instrumentationTest를 실행합니다. (이것은 항상 효과가 있었다).

deviceCheck : 이는 Continuos 통합 테스트에 유용합니다.

답변

1

점검은 계측 테스트 IIRC를 실행해야합니다. 비 안드로이드 테스트 실행. 현재 android-gradle 플러그인은 지원하지 않습니다. 그러나 나는 로보트 라이트로 JUnit 테스트를 실행하기 위해 플러그인을 만들었으므로 계측 테스트가 필요하지 않습니다. 검사가 모든 검사를 실행 android-unit-test

5
  1. 있다면 ... 그것이 내가 connectedInstrumentTest에서 얻을 것들을 실행하지 않아야 : 여기 링크입니다? 작업을 확인하기 위해 connectedInstrumentTest 태스크를 의존성으로 실행해야 할 수 있습니다.

    check.dependsOn connectedInstrumentTest 나는 안드로이드 환경을 필요로하지 않는 테스트를 실행할 수있는 방법

  2. ? 안드로이드 프로젝트의

우리는

  1. JUnit 테스트
  2. Robolectric Test
  3. 악기 테스트를

JUnit 테스트

를 테스트의 3 종류를 설명 할 수

우리는 Android 관련 클래스를 확인하기 위해 일반 junit 테스트를 사용할 수 없습니다.우리가 할 수있는 일은 자바 라이브러리 프로젝트와 코어 자바 클래스를 분리하고 그 의존성을 안드로이드 프로젝트에 추가하는 것입니다.

Robolectric Test

우리는 에뮬레이터 외부에서 단위 테스트를 실행 robolectric 테스트를 사용할 수 있습니다. 따라서 CI 서버를 사용하여 테스트를 빠르고 쉽게 구성 할 수 있습니다.

robolectric 테스트를 실행하려면 gradle-android-test-plugin 을 사용하십시오. 해당 플러그인을 사용하는 방법이 명확하게 설명되어 있습니다.

우리는이 플러그인을 사용하기 위해 기본 폴더 구조를 사용할 필요가

프로젝트 구조. 우리는 robolectric 테스트를 유지하기 위해 '테스트'라는 폴더를 사용할 수 있습니다

MyProject/ 
    | settings.gradle 
    | build.gradle 
    - app/ 
     | build.gradle 
     -main 
      -java 
       -com.example.calculator  

     -test 
      -java 
       -com.example.calculator.robolectrictests 

빌드 파일이 테스트 작업이 자동으로 확인 작업과 실행됩니다

buildscript { 
    repositories { 
     mavenCentral() 
     maven { 
      url 'https://oss.sonatype.org/content/repositories/snapshots/' 
     } 
    } 
} 
dependencies { 
    classpath 'com.android.tools.build:gradle:0.6.+' 
    classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.1-SNAPSHOT' 
} 
apply plugin: 'android' 
apply plugin: 'android-test' 

repositories { 
    mavenCentral() 
} 
android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.0" 
    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 19   
    } 
} 
dependencies { 
    compile 'com.android.support:appcompat-v7:+' 
    testCompile 'junit:junit:4.10' 
    testCompile 'org.robolectric:robolectric:2.1.+' 
    testCompile 'com.squareup:fest-android:1.0.+' 
} 

입니다.

악기 테스트

당신이 언급 한 바와 같이,이 안드로이드 에뮬레이터를 사용이 필요합니다. 그러면 테스트가 느려지므로 TDD를 수행하는 좋은 방법이 아닙니다.

TDD 공정에서 단위 테스트로 로보트 테스트를 사용할 수 있습니다. 인스트루먼트 테스트 우리는 TDD에서 통합 테스트로 사용할 수 있습니다.

+4

gradle-android-test-plugin은 더 이상 사용하지 않아야합니다. 더 이상 사용하지 않아야합니다 (최신 안드로이드 gradle 플러그인에서 작동하지 않습니다) – tomrozb

+0

플러그인 이름이 ** robolectric-gradle-plugin으로 변경되었습니다 ** 이제 Robolectric 팀에 의해 유지 관리됩니다 : https://github.com/robolectric/robolectric-gradle-plugin – friederbluemle