android Robolectric: संसाधन $ NotFoundException: एंड्रॉइड ग्रैडल प्लगइन 3 के साथ स्ट्रिंग संसाधन आईडी




unit-testing testing (4)

मेरे मामले में निम्नलिखित ने मेरी समस्या हल की: "समस्या एंड्रॉइड स्टूडियो से संबंधित है। 'रन' पर जाएं -> 'कॉन्फ़िगरेशन संपादित करें ...' और 'वर्किंग डायरेक्टरी' मान को $ MODULE_DIR $ में बदलें

अपने परीक्षण चलाएं।

'एंड्रॉइड स्टूडियो के साथ बिल्डिंग' के तहत यहां अधिक जानकारी। "

संदर्भ: https://github.com/robolectric/robolectric/issues/2653

Android Studio 3.0 Beta2
classpath 'com.android.tools.build:gradle:3.0.0-beta3'
testCompile 'org.robolectric:robolectric:3.4.2'

टेस्ट क्लास जिसका मैं उपयोग कर रहा हूं वह चलाने में विफल रहता है:

@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
@RunWith(RobolectricTestRunner.class)
public class RecipeAdapterTest {
    private MainActivity activity;

    @Before
    public void setup() {

    activity = Robolectric.setupActivity(MainActivity.class);

    /* Also tried this same Error
     activity = Robolectric.buildActivity(MainActivity)
                .create()
                .resume()
                .get();
    */
    }

    @Test
    public void testActivityShouldNotBeNull() {
        assertThat(activity, is(notNullValue()));
    }
}

यह त्रुटि का ढेर निशान है:

android.content.res.Resources$NotFoundException: String resource ID #0x7f0c0020

    at android.content.res.Resources.getText(Resources.java:274)
    at android.content.res.Resources.getString(Resources.java:360)
    at android.content.Context.getString(Context.java:376)
    at org.robolectric.shadows.ShadowActivity.getActivityTitle(ShadowActivity.java:100)
    at org.robolectric.shadows.ShadowActivity.callAttach(ShadowActivity.java:110)
    at org.robolectric.android.controller.ActivityController.attach(ActivityController.java:56)
    at org.robolectric.android.controller.ActivityController.of(ActivityController.java:25)
    at org.robolectric.Robolectric.buildActivity(Robolectric.java:98)
    at org.robolectric.Robolectric.buildActivity(Robolectric.java:94)
    at org.robolectric.Robolectric.setupActivity(Robolectric.java:102)
    at me.androidbox.busbybaking.adapters.RecipeAdapterTest.setup(RecipeAdapterTest.java:63)

Edit Configurations मैंने Working Directory को $MODULE_DIR$ पर सेट कर दिया है

किसी भी सुझाव के लिए बहुत धन्यवाद।


आप इस मामले में @Config(manifest = "<projectFolder>/src/main/AndroidManifest.xml") को भी आजमा सकते हैं, जिसमें आप संसाधनों को शामिल नहीं कर सकते क्योंकि कुछ प्रोजेक्ट परीक्षण उसमें विफल हो जाएंगे।


यदि आपका निर्माण AAPT2 संसाधन प्रसंस्करण समस्या के कारण विफल रहता है या आप Roboelectric का उपयोग करना चाहते हैं, तो आप AAPT2 android.enableAapt2=false अपने gradle.properties फ़ाइल में android.enableAapt2=false सेटिंग करके AAPT2 android.enableAapt2=false को अक्षम कर सकते हैं और ./gradlew --stop को ./gradlew --stop से चलाकर ./gradlew --stop को ./gradlew --stop कर सकते हैं। कमांड लाइन।

आधिकारिक दिशानिर्देश androidstudio.googleblog.com/2017/06/…


Robolectric दस्तावेज बताता है कि निम्न कॉन्फ़िगरेशन एंड्रॉइड स्टूडियो 3.x के साथ उपयोग किया जाना चाहिए:

android {
  testOptions {
    unitTests.includeAndroidResources true
  }
}




robolectric