2016-05-05 15 views
5

Projemi çok platformlu olarak değiştirdim.Not: Bir modül bağımlılığından nasıl test yapılır?

Önceki durum: Tek build.gradle tek bir modül (proje). Tüm testler test klasöründeydi ve gradlew testDebug'u çalıştırdığımda tüm 500 testlerim çalışıyordu.

Yeni durum: Ben 3 modüller

  • çekirdek
  • androidversion
  • rasberryPiVersion

Bunların her biri tutma ama hiçbir şey yapmaz bir ana gradle projesi var modüllerin kendi not defteri var ama sadece android ve rasberryPi modülü inşa edilebilir. Bağımlılıklarında (ilgili build.gradle dosyasında), "çekirdek" modülüne derlerler. Bunun gibi:

dependencies { 
    compile project(':clapcore') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android:android:4.1.1.4' 
} 

Tüm 500 testlerim artık merkezde. Yani Android modülünde gradlew clean assembleDebug testDebug yaptığımda hiçbir test tespit edilmedi ve test sonucu klasörü boş.

doğrudan çekirdek modülünde testDebug komutu çalıştırmak için çalıştı, ama kendi başına inşa olmadığından, ben hata alırsınız:

FAILURE: Build failed with an exception. 

* What went wrong: 
Task 'testDebug' not found in project ':core'. 

Yani benim soru: bir yolu içinde var mı "testDebug" komutunu, modül bağımlılığında (çekirdek) bulunan tüm testleri çalıştırmak için söylemek ister misiniz?

Ben de android modülünün bağımlılığı bir testCompile eklemeye çalıştık ama böyle, doesnt iş:

dependencies { 
    compile project(':clapcore') 
    testCompile project(':clapcore') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android:android:4.1.1.4' 
} 

Teşekkür!

DÜZENLEME ben çekirdeğini komutu gradlew build yapabilir ve 'çekirdek' modülünde testi olacağını bulduk. Ama bu testi, eğer mümkün ise "kaskat" ile çalıştırmak için bir yol istiyorum.

* Ben 'android' modülünde komutu gradlew buildNeeded yapabilir ve android modülü ve çekirdek için bir yapı yapacak bulduk 2 * DÜZENLEME. Ne yazık ki, sadece sürümde inşa! Birisi bana bu işlevi kullanmak için bir yol gösterebilir ama hata ayıklama, şaşırtıcı olurdu. Hata ayıklamasına ihtiyacım var çünkü sürümün sürümü, sürüm değişikliği, git, itme, vb. Gibi bir çok görevi başlatıyor ... Bu sadece bir gece yapısı için, bu yüzden hata ayıklamasında olması gerekiyor.

cevap

0

Gradle web sitesinin belgelerini okuduktan sonra, çok iyi bir işlev olan buildNeeded'un tüm buildType işlevini çalıştırdığını ve değiştiremeyeceğinizi keşfettim. BuildType'ı seçme olasılığını veren tek işlevler sırasıyla assembleDebug ve assembleRelease'dur.

Yayınlama işlemimden bu yana (etiket oluşturma, sürüm güncelleme, git'e git, vb.)) assembleRelease'dan hemen sonra koşuyordum, takılı kaldım çünkü bir gece yapımında buildNeeded koşuyor, serbest bırakma işlemini tetikleyecekti.

Bu nedenle, buildOnce dosyasını değiştirerek releaseVersion adlı bir görev oluşturdum. Yani gerçekten bir sürüm oluşturmak istediğimde, releaseVersion'u aradığımda, ancak gece yapımında/test yapmak istediğimde, buildNeeded komutunu çağırıyorum.

Dikkat edilmesi gerekenler: Test sonuçları her modülün "derleme" klasörünün her birinde bulunur. CI kullanıyorsanız tüm modülü temizlemeye özen gösterin.

İlgili konular