2015-05-26 16 views
6

Yeni projemde roboelectric'i entegre etmeye çalışıyorum. Anlıyorum ve roboelectricAndroid stüdyosu ile roboelectric'i gravel ile entegre etme her zaman paket verir org.junit mevcut değil

http://pivotallabs.com/setting-up-robolectric-in-android-studio-1-1-on-os-x/

http://nenick-android.blogspot.in/2015/02/android-studio-110-beta-4-and.html

http://raptordigital.blogspot.in/2014/02/test-driven-development-with.html

impliment bağlantıları izleyerek kullanılan Ama

Error:Gradle: Execution failed for task ':app:compileDebugJava'. 
> Compilation failed; see the compiler error output for details. 
E:\junitTest\android-studio-robolectric-example-master\JunitTestApp\app\src\test\java\com\inapp\junittestapp\SampleTest.java 
Error:(7, 17) Gradle: error: package org.junit does not exist 
Error:(8, 24) Gradle: error: package org.junit.runner does not exist 
Error:(9, 23) Gradle: error: package org.robolectric does not exist 
Error:(10, 34) Gradle: error: package org.robolectric.annotation does not exist 
Error:(11, 31) Gradle: error: package org.robolectric.shadows does not exist 
Error:(13, 27) Gradle: error: package org.hamcrest does not exist 
Error:(13, 1) Gradle: error: static import only from classes and interfaces 
Error:(14, 27) Gradle: error: package org.hamcrest does not exist 
Error:(14, 1) Gradle: error: static import only from classes and interfaces 
Error:(15, 24) Gradle: error: package org.junit does not exist 
Error:(15, 1) Gradle: error: static import only from classes and interfaces 
Error:(16, 30) Gradle: error: package org.robolectric does not exist 
Error:(16, 1) Gradle: error: static import only from classes and interfaces 
Error:(17, 30) Gradle: error: package org.robolectric does not exist 
Error:(17, 1) Gradle: error: static import only from classes and interfaces 
Error:(18, 30) Gradle: error: package org.robolectric does not exist 
Error:(18, 1) Gradle: error: static import only from classes and interfaces 
Error:(25, 2) Gradle: error: cannot find symbol class RunWith 
Error:(26, 2) Gradle: error: cannot find symbol class Config 
Error:(30, 6) Gradle: error: cannot find symbol class Test 
Error:(32, 38) Gradle: error: cannot find symbol method  setupActivity(Class<MainActivity>) 
Error:(36, 9) Gradle: error: cannot find symbol method clickOn(Button) 
Error:(38, 41) Gradle: error: cannot find symbol variable ShadowAlertDialog 
Error:(39, 42) Gradle: error: cannot find symbol method notNullValue() 
Error:(41, 9) Gradle: error: cannot find symbol class ShadowAlertDialog 
Error:(41, 47) Gradle: error: cannot find symbol method shadowOf(AlertDialog) 
Error:(42, 61) Gradle: error: cannot find symbol method is(String) 

benim testin altında eklendi benim test sınıfı çalıştıran aşağıdaki hatayı gettin am sınıf kodu

import android.app.AlertDialog; 
import android.widget.Button; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.robolectric.RobolectricTestRunner; 
import org.robolectric.annotation.Config; 
import org.robolectric.shadows.ShadowAlertDialog; 

import static org.hamcrest.CoreMatchers.is; 
import static org.hamcrest.CoreMatchers.notNullValue; 
import static org.junit.Assert.assertThat; 
import static org.robolectric.Robolectric.clickOn; 
import static org.robolectric.Robolectric.setupActivity; 
import static org.robolectric.RobolectricBase.shadowOf; 


@RunWith(RobolectricTestRunner.class) 
@Config(manifest = "app/src/main/AndroidManifest.xml", emulateSdk = 18) 
public class SampleTest { 

    @Test 
    public void buttonTapDisplaysAnAlertDialog() { 
     MainActivity helloActivity = setupActivity(MainActivity.class); 

     Button button = (Button) helloActivity.findViewById(R.id.button); 

     clickOn(button); 

     AlertDialog latestAlertDialog = ShadowAlertDialog.getLatestAlertDialog(); 
     assertThat(latestAlertDialog, is(notNullValue())); 

     ShadowAlertDialog shadowAlertDialog = shadowOf(latestAlertDialog); 
     assertThat(shadowAlertDialog.getTitle().toString(), is("Hi")); 
    } 

} 

10 ve uygulamamın gradle dosyası bende

https://discuss.gradle.org/t/why-cant-my-simplest-one-line-build-gradle-compile-tests-with-junit-jar/1868

Ben bir şey kaçırmak düşünüyorum bu blogda aynı hata buldu

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.example.junittestapp" 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    sourceSets { main { java.srcDirs = ['src/main/java', 'src/test/java/'] } } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:support-v4:22.1.1' 
    testCompile 'junit:junit:4.12' 
    testCompile 'org.robolectric:robolectric:2.4' 
} 

olduğunu. Herhangi bir yardım takdir edilecektir.

+0

Android Studio'da birim testini etkinleştirdiniz mi? –

+0

evet içeri gelin mi? –

+0

Hayır FIle-> Ayarlar-> Gradle-> Deneysel: Birim Testini Etkinleştir –

cevap

13

Senin sorunun, uygulama için ve test için kod içeren ana olarak ilan sourceSet bir olması. ': App: compileDebugJava' başarısız o (- sefer testCompile enjekte ediyor) o anda junit.jar olmadığından Gradle görev nedeni budur. İki farklı sourceSet ilan et ve her şey çalışmalı.

sourceSets { 
    main { 
     java.srcDirs = ['src/main/java'] 
    } 
    robolectric { 
     java.srcDir file('src/test/java/') 
     resources.srcDir file('src/test/resources') 
    } 
} 
2

Aynı sorun vardı, benim durumumda, test dizinini yanlış dizine yerleştirdim. java \ \ androidTest src

[paket]

\ \

yerine

src \ test \ java [paket] Ben başka dizinlere ile çalışacak şekilde yapılandırabilirsiniz sanırım, ama koyarak androidTest test ve UI/sistem testlerinde birim testleri tamam görünüyor

3

Android'de birim testlerinizi çalıştırmaya çalışarak buraya geldiyseniz, test dosyalarınızın konumunu şu şekilde belirleyerek bu sorunu düzeltebilirsiniz:

sourceSets { 
    main { java.srcDirs = ['src/main/java'] } 
    test { java.srcDirs = ['src/test/java'] } 
} 

Kaynak dizininizin bulunduğu her yeri kullanmak üzere değiştirebilirsiniz. Not: Bu, build.gradle (uygulama düzeyi)

+0

Teşekkür ederim, bu beni sağ tarafa koydu yolu. – waynesford

4

Aynı hata burada gider. Benim durumumun çözümü: main.java.srcDirs'dan 'src/test/java''u kaldır.

önce:

main.java.srcDirs = ['src/main/java', 'src/test/java'] 

sonra:

main.java.srcDirs = ['src/main/java'] 

Android Studio 2.0 Önizleme 4. ile Ve aslında son Android Studio ile Tamam test edilmiş olan bu robolectric ayarlamak gerçekten gerekli değil sourceSets içindeki özellik (belirtilen @falvick olarak).

+0

benim için çalışıyor, teşekkürler Jing Li – Victor

İlgili konular