2014-05-13 35 views
9

Android Studio'da gradyan kullanarak birim testlerimi yazıyorum. gayet güzel çalışıyorAndroid gradle src/androidTest/res/layout/mylayout.xml mypackage.R içinde bulunamadı.R

src/androidTest/java

: Ben yer testleri var.

Özellikle, src/androidTest/res/düzeni/mylayout.xml almak istiyorum

src/androidTest/res: Şimdi benim testlerde ben tanımlanır kaynağa erişmek istiyorum. Sorun, test paketim için R sınıfı veya bu konudaki herhangi bir paketin mylayout tanımlı olmasıdır.

benim build.gradle bu yaptım ve bir fark yaratmak değildi: Ben androidTest sadece görünür olduğunu androidTest sınıflara kaynak sağlanabilmesi nasıl

sourceSets { 
    androidTest.resources.srcDirs = ['src/res'] 
} 

?

+0

sadece testine mevcut kaynakları olması gerekir Neden? – helleye

+3

Özellikle ağ protokolleri için sınamalar yazdığınızda, çalışmayan ve çalışmayacak verileri örnekleyecek tanımlanmış bir örnek veri kümesine gereksiniminiz vardır. Testten başka bir amaca hizmet etmedikleri için bu kaynakları uygulamaya dahil etmek saçma olurdu. – vangorra

cevap

1

Çözümü buldum, bunu build.gradle dosyanıza ekleyin.

sourceSets { 
    androidTest { 
     java.srcDirs = ['src/androidTest/src'] 
     resources.srcDirs = ['src/androidTest/src'] 
    } 
} 
+0

Benim için çalışmıyor ... biraz detaylandırır mısınız? –

+1

Bunu benim için de işe almayacağım. Şu anda kurulu Gradle 2.1 ile 'com.android.tools.build:gradle:0.13.+' kullanma. Yolları biraz 'src/androidTest/java' ve 'src/androidTest/res' olarak değiştirdi. Sözdizimi ile çalışması gerektiği anlaşılıyor. İlginç bir şekilde, test klasörlerimdeki düzenler için ara kaynak dosyalarının (önceden birleştirme) oluşturulduğunu görebiliyorum. Bunu herkes çalıştırabilir mi? Lütfen? :-) –

+0

Utanç. Aynı hatayı tekrar alıyorum ve bu artık çalışmıyor. – vangorra

8

Benim için çözüm src/androidTest/res yılında src/androidTest/java kaynak dosyalarını ve kaynak dosyaları koymak oldu. Bunlar standart konumlardır, bu nedenle gradle.build'da herhangi bir şeyi düzenlemeniz gerekmez.

Artı,

import com.mycompany.myappname.test.R; 

Kaynak

import com.mycompany.myappname.R; 

adresinin R ithalat adlandırmak: Configuring res srcDirs for androidTest sourceSet

+2

Bu, hem testi hem de normal "R" sınıfını aynı anda içe aktaramayacak olmanıza rağmen, bu bana yardımcı oldu. Uygulama kaynak kimliğimi de testlerimde kullanmak istediğimden, test uygulamasının "R" dosyasına tam olarak nitelenmiş sınıf adını kullanarak başvurmak zorunda kaldım, yani "int someId = com.mycompany.myappname.test.R.raw .some_raw_resource; ' –