2013-06-18 34 views
17

Gradle ve Android Studio'da yeniyim ve testlerin nasıl çalıştırılacağını anlamaya çalışıyorum. http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing'daki talimatları takip ettim ve Cihaz Testlerini çalıştırabilirim ancak sadece /gradlew connectedInstrumentTest'u çalıştırabilirim. Diğer check görevlerini anlamakta zorlanıyorum; bu, uygulamasındaki herhangi bir kodu uygulamaz. Bu ./gradlew tasks printsGradle Android testi

... 
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. 
... 

çalışır bütün kontrolleri check edersem ... bu connectedInstrumentTest aldığım olanları aday olmaması için nedir?

Ayrıca, Android ortamına ihtiyaç duymayan testleri nasıl çalıştırabilirim? Onları/test/java'ya yerleştirmeliyim? Eğer öyleyse, onları çalıştırmak için hangi komutu çalıştırmalıyım?

Bu sorular çok açık görünüyorsa üzgünüz, ancak bu sorulara dokümanlardaki hiçbir yanıtı bulamadım.

Teşekkür ederiz!

Düzenleme: Yani burada bazı ilerlemeler yaptık

. check bir şey yapmıyor gibi görünüyor. Bazı JUnit testlerini çalıştırmak için check'a bağımlı görevler eklemek geliştiriciyi (şu anda) olacaktır. Bir görev oluşturmanız, kaynakları bulmasını, derlemesini ve çalıştırmasını sağlamanız gerekecektir.

connectedCheck ve connectedInstrumentTest: aygıtta instrumentationTest'i çalıştırır. (Bu her zaman işe yaradı).

deviceCheck: Dokümanlar, Continuos entegrasyon testleri için de bu yararlıdır.

cevap

1

Kontrol enstrümantasyon testlerini yapmalı mıdır? IIRC. Android dışı testler yapmak hakkında. Şu anda android-graper eklentisi bunu desteklemiyor. Ancak, JUnit testlerini robolectric ile çalıştırmak için bir eklenti yaptım, böylece enstrümantasyon testlerine ihtiyacınız yok. çek bütün kontrolleri gerçekleştiren android-unit-test

5
  1. edersem ... bu connectedInstrumentTest aldığım olanları aday olmaması: İşte link? Görevi kontrol etmek için connectedInstrumentTest görevini bağımlılık olarak çalıştırmanız gerekebilir.

    check.dependsOn connectedInstrumentTest ben Android ortamını gerekmez testleri çalıştırabilirsiniz nasıl

  2. ? robot projeler için

biz

  1. JUnit test
  2. Robolectric Test
  3. cihaz deney

JUnit testi

Testler yaklaşık 3 tip ele olabilir

Android ile ilgili sınıfları kontrol etmek için sade deneme testini kullanamayız.Yapabileceğimiz bir java kütüphanesi projesine ayrı ana java sınıfları ve bu bağımlılığı android projeye eklemek.

Robolectric Test

Biz Emülatörünün dışında birim testleri çalıştırmak için robolectric testini kullanabilirsiniz. Bu, testleri CI sunucuları ile hızlı ve kolay bir şekilde yapılandırır.

Robolectric testini çalıştırmak için gradle-android-test-plugin kullanıyoruz. Bu eklentinin nasıl kullanılacağını açık bir şekilde anlatıyoruz.

Biz bu eklentiyi kullanmak için varsayılan klasör yapısını kullanmak zorunda

Proje yapısı. Biz robolectric testleri tutmak için 'test' adlı klasörü kullanmak zorunda:

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

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

inşa dosyası Bu test görevi otomatik onay görev ile yürütür olacak

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.+' 
} 

olduğunu.

Enstrüman Testi

sen de belirtildiği gibi, bu android emülatörü kullanarak gerektirir. Bu testleri yavaşlatıyor, yani TDD yapmak için iyi bir yol değil.

TDD işleminde robolektrik testi birim testler olarak kullanabiliriz. Cihaz testi, TDD'de entegre test olarak kullanılabilir.

+4

Gradle-android-test-plugin kullanımdan kaldırıldı ve artık kullanmamalısınız (basitçe en son android graper eklentisiyle çalışmaz) – tomrozb

+0

Eklenti, ** robolectric-gradle-plugin olarak yeniden adlandırıldı ** ve şu anda Robolectric ekibi tarafından yönetiliyor: https://github.com/robolectric/robolectric-gradle-plugin – friederbluemle