Ich versuche, Robolectric Tests und arbeiten in unserem aktuellen Projekt, und nicht viel Glück. Meine Präferenz wäre, diese in Android Studio 1.1.0+ laufen zu lassen. Das ist meine Projektstruktur:Manifest und Setup Probleme bekommen Robolectric arbeiten mit Android Studio 1.1.0
und hier ist mein Test:
import android.widget.Button;
import com.mycompany.android.app.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import static org.junit.Assert.assertNotNull;
@Config(manifest = "AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
public class SplashActivityTest {
private SplashActivity splashActivity;
@Before
public void setup() {
splashActivity = Robolectric.buildActivity(SplashActivity.class).create().start().resume().get();
}
@Test
public void shouldNotBeNull() {
Button signUpButton = (Button) splashActivity.findViewById(R.id.sign_up_button);
assertNotNull(signUpButton);
Button loginButton = (Button) splashActivity.findViewById(R.id.login_button);
assertNotNull(loginButton);
}
}
Egal, was ich tue, um den Rahmen zu versuchen und zu erhalten, den Test zu finden, indem Sie den Pfad zu dem Manifest zu ändern kann es nicht finden - entweder bekomme ich WARNING: No manifest file found at ./AndroidManifest.xml.Falling back to the Android OS resources only.
Nachrichten oder API Level XX is not supported - Sorry!
Nachrichten. Am Ende, ich denke, das ist der Grund, warum ich die folgenden Fehler bin immer, wenn der Test läuft:
android.content.res.Resources$NotFoundException: unknown resource 2130903074
Ich habe nicht die experimentelle Option aktiviert ist, haben das Recht Gradle Plugin konfiguriert (Einheit Tests Arbeit gut), aber ich bin mir nicht sicher, was ich vermisse, um Instrumentierungstests durchführen zu können.
App-Level-Build-Datei:
apply plugin: 'org.robolectric'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.9.5'
testCompile 'org.robolectric:robolectric:2.4'
testCompile 'org.hamcrest:hamcrest-core:1.1'
testCompile 'org.hamcrest:hamcrest-library:1.1'
testCompile 'org.hamcrest:hamcrest-integration:1.1'
Top-Level-Build-Datei:
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
classpath 'org.robolectric:robolectric-gradle-plugin:1.0.0'
}
Nicht ganz sicher Datei ist und Paket zu manifestieren, wenn wir das gleiche Problem haben. Ich wollte Robolectric 2.4 verwenden, aber das funktionierte nicht gut mit Android Studio 1.0.etwas. Am Ende benutze ich immer noch robolectric 2.3. –