I am trying to integrate roboelectric into my new project. I used the following links to understand and implement roboelectric
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
But I get the following error when running my test class
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)
Added below code of my test class
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")); } }
and my gradle application is
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' }
I also found a mistake on this blog
https://discuss.gradle.org/t/why-cant-my-simplest-one-line-build-gradle-compile-tests-with-junit-jar/1868
I think I missed something. Any help would be appreciated.