Die meta-Daten-Tags in Ihre app AndroidManifest.xml nicht der richtige Wert ist,
Habe ich das Problem, wo Robolectric Probleme mit meinem AndroidManifest.xml. Meine app läuft gut, aber Robolectric ist, scheitern alle meine versuche, auch assertTrue(true)
. Der Fehler ist:
android.view.InflateException: XML file /[blah]/build/res/all/debug/layout/activity_main.xml line #-1 (sorry, not yet implemented): Error inflating class fragment
verursacht durch:
java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4030500 but found 0. You must have the following declaration within the <application> element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
Das problem ist, dass ich bereits, die Zeile in meiner manifest. Im folgenden sind einige der relevanten Dateien:
AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bryansills.studywithfriends"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:logo="@drawable/ic_action_icon"
android:label="@string/app_name"
android:theme="@style/study">
<activity
android:name="com.bryansills.studywithfriends.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key_v2"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
</application>
</manifest>
bauen.gradle:
buildscript {
repositories {
mavenCentral()
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.+'
classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.1-SNAPSHOT'
}
}
apply plugin: 'android'
apply plugin: 'android-test'
repositories {
mavenCentral()
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 18
}
}
dependencies {
compile 'com.android.support:support-v4:+'
compile 'com.google.android.gms:play-services:4.0.+'
testCompile 'junit:junit:4.11'
testCompile 'org.robolectric:robolectric:2.3-SNAPSHOT'
testCompile 'com.squareup:fest-android:1.0.+'
}
MainActivityTest.java:
package com.bryansills.studywithfriends;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.ActionProvider;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import com.bryansills.studywithfriends.MainActivity;
import dalvik.annotation.TestTargetClass;
import org.junit.Test;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.shadows.ShadowToast;
import org.robolectric.tester.android.view.TestMenuItem;
import com.bryansills.studywithfriends.RobolectricGradleTestRunner;
import java.lang.*;
import java.lang.CharSequence;
import java.lang.Exception;
import java.lang.Override;
import java.lang.System;
import static org.junit.Assert.assertTrue;
@RunWith(RobolectricGradleTestRunner.class)
public class MainActivityTest {
private MainActivity mainActivity;
private DrawerLayout drawer;
private MenuItem settingsMenuItem;
private MenuItem helpMenuItem;
@Before
public void setUp() throws Exception {
mainActivity = Robolectric.buildActivity(MainActivity.class).create().visible().get();
drawer = (DrawerLayout) mainActivity.findViewById(R.id.drawer);
settingsMenuItem = new TestMenuItem(R.id.settings);
helpMenuItem = new TestMenuItem(R.id.help);
}
@Test
public void testTrue() throws Exception {
assertTrue(true);
}
@Test
public void testActivity() throws Exception {
assertTrue(mainActivity != null);
}
@Test
public void settingsMenuItemShouldStartSettingsActivity() throws Exception {
mainActivity.onOptionsItemSelected(settingsMenuItem);
assertTrue(ShadowToast.getTextOfLatestToast().equals("Settings"));
}
@Test
public void helpMenuItemShouldStartSettingsActivity() throws Exception {
mainActivity.onOptionsItemSelected(helpMenuItem);
assertTrue(ShadowToast.getTextOfLatestToast().equals("Help"));
}
}
Nur im Fall sehen Sie eine Warnung, dass Robolectric nicht finden können, AndroidManifest? Was ist die Struktur Ihres Projekts?
Ich weiß es nicht. Ich habe gerade auskommentiert alle Methoden in MainActivityTest.java außer für testTrue() und es ging. Das GitHub-repo für dieses Projekt ist richtig hier wenn Sie sehen wollen, meine Projekt-Struktur.
Ich bestätige, dass Robolectric kann nicht aufblasen, Karten-fragment. Lassen Sie bitte die robolectric E-mail-Liste
Ich weiß es nicht. Ich habe gerade auskommentiert alle Methoden in MainActivityTest.java außer für testTrue() und es ging. Das GitHub-repo für dieses Projekt ist richtig hier wenn Sie sehen wollen, meine Projekt-Struktur.
Ich bestätige, dass Robolectric kann nicht aufblasen, Karten-fragment. Lassen Sie bitte die robolectric E-mail-Liste
InformationsquelleAutor Bryan Sills | 2014-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis : Erste ruhig zu sein, sicher, dass Sie den Api-key im manifest Nach dem anlegen in hier.
Entfernen Sie den alten Stil
permission
aus dem Manifest. Entfernen Sie die Erlaubnis gegeben, falls vorhanden.Google Map V2 fügen Sie neue Funktion, um zu manifestieren. Fügen Sie code gegeben, die das manifest..
neben
Vergessen Sie nicht, geben Sie API-key in
manifest
.Entfernen Sie auch diese..
InformationsquelleAutor Xar E Ahmer
Dieses fest war für mich ein Upgrade von Robolectric 2.1 bis 2.3-SNAPSHOT (habe ich nicht getestet, 2.2). Allerdings habe ich dann auf eine andere Ausgabe:
Es scheint, dies ist eine verschiedene bug, die ich "fixen" durch hardcoding die GMS version in meinem Manifest anstatt auf Sie verweisen. Dies ist wahrscheinlich nicht eine gute Idee, aber bis der Fehler behoben ist, funktioniert es...
InformationsquelleAutor ZoFreX
Müssen Sie die folgenden zu Ihrem
AndroidManifest.xml
:InformationsquelleAutor Melbourne Lopes