2015-07-26 25 views
5

Her iki Android testinin /androidTest hem de bir uygulama modülü için testler yazarken, hem de birim testleri /test için, aynı test sınıfları kümesini aynı şekilde yineliyorum. Aynı sınıf yolunu paylaşmadığındanHem Android testlerinde hem de birim testlerinde kullanılabilecek test sınıfları nasıl oluşturulur?

Örneğin, bana Ancak /test/MockUtils.java hızla mocks kurmak yardımcı bazı statik fonksiyonlara sahip, benim Android testlerin hiçbirinde bu yardımcı sınıf yeniden kullanamazsınız - /test vs /androidTest.

Sadece test kaynakları içeren yeni bir modül oluşturmayı düşündüm. Ancak, Android Gradle eklentisi bir uygulama modülüne bağlı olmayı reddettiği için bu fikir uçmaz.

project testCommon, derleme bağımlılığı olarak desteklenmeyen bir APK arşivi haline getiriyor.

Hem Android testlerinde hem de birim testlerinde tekrar kullanılabilen test sınıfları oluşturmanın başka bir yolu var mı?

+0

Daha: ([Android'de birim testler ve enstrümantasyon testleri arasında kod paylaşımı] http://blog.danlew.net/2015/11/02/sharing -komut-testleri-ve-enstrümantasyon-testleri-on-android /), [Enstrümantasyon ve birim testleri arasında pay kodu] (https://gerrit.wikimedia.org/r/#/c/238184/1 /app/build.gradle) – JJD

cevap

6

NOT: Bu, denemediğim teorize bir çözümdür.

Adım # 1: Modülünüzde, paylaşılan sınama kodunu oluşturmaya çalıştığınız bir testSrc/ dizini oluşturun.

Adım # 2: Paylaşılan kodu bu dizine koyun (Java paketine göre uygun alt dizinlerle).

Adım # 3: modülün build.gradle dosyada android kapatılması içine aşağıdaki kapatılması ekleyin: yapmalıyım bu testSrcandroidTest Java kodu için başka kaynak dizin olduğunu Android için Gradle anlatmak nedir

sourceSets { 
    androidTest { 
     java.srcDirs <<= 'testSrc' 
    } 

    test { 
     java.srcDirs <<= 'testSrc' 
    } 
} 

ve test kaynakları.

+0

SolShift herhangi bir nedenden dolayı çalışmadığı için çözümünüzü değiştirmek zorunda kaldım. Bunun yerine yolları yeniden işaretlemeliydim 'test { java.srcDirs = ['src/test', 'testSrc'] }' Çözümünüzü düzenleyebilir miyim? –

+0

@SomeNoobStudent: Sol vardiya operatörü ile spesifik belirtileriniz nelerdi?Yeni bir proje oluşturdum, cevabımdaki adımları izledim, Gradle dosyası Android Studio'da öğeleri senkronize ettim ve herhangi bir yapı hatası almadım. Hatta boş bir 'testSrc /' dizini ile testler yapabildim. – CommonsWare

+0

'IntelliJ 14.1.4/Plugin 1.2.3/Gradle 2.4-all' kullanıyorum ve' << 'özelliği 0 efektini kullanıyor - IDE yolu yeşil renkte vurgulamaz ve içindeki sınıflar göz ardı edilir, bana referans göndermeme izin vermez sınavlarımda. –

İlgili konular