android - ग्रेडल रोबॉलिक्रिक रिसोर्सेस नॉटफॉइड अप्सप्शन इन टेस्टिंग




testing resources (2)

मुझे पहले से ही पता था कि इस मुद्दे से पहले पूछा गया है लेकिन मैं इस समस्या को हल नहीं कर सकता। मैं jUnit, रोबॉलिक्रिक और ग्रेडल के साथ परीक्षण संकलन और आवेदन करने में सक्षम हूं। समस्या या त्रुटि तब आती है जब मैं किसी गतिविधि का परीक्षण करने या संसाधन प्राप्त करने की कोशिश करता हूं। हर बार मुझे एक ही समस्या मिलती है:

android.content.res.Resources $ NotFoundException: अज्ञात संसाधन

संसाधन $ NotFoundException: ऐसा कोई विषय नहीं

 PageActivity startPageActivity   =   Robolectric.buildActivity(PageActivity.class).create().get();

 Context context =  Robolectric.getShadowApplication().getApplicationContext();
 ShadowContext shadowContext = shadowOf(context);
 assertNotNull( " No App name String " ,shadowContext.getString(R.string.app_name) );

और यह परियोजना की संरचना है:

.
├── build.gradle
├── settings.gradle
└── mainproject
    ├── build
       ├── classes
          └── debug
    ├── build.gradle
    └── src
       └── main
           ├── AndroidManifest.xml
           └── java
                └── com...
           └── resources
       └── envDev
           └── java
                └── com...
           └── resources
       └── envQa
           └── java
                 └── com...
           └── resources
       └── envLive
           └── java
                └── com...
           └── resources
       └── test
           └── src
                └── java
                      └── com...
                └── rescources
       └── testEnvDev
           └── src
                └── java
                      └── com...
                └── rescources
       └── testEnvQa
           └── src
                └── java
                      └── com...
                └── rescources
       └── testEnvLive
            └── src
                 └── java
                       └── com...
                 └── rescources

यह ग्रेड सेट में निर्धारित स्रोत है:

sourceSets {  
        main {
            java.srcDir  file('src/main/java')
            manifest.srcFile file('src/main/AndroidManifest.xml')
            res.srcDir file('src/main/resources')
        }
        envDev {
            java.srcDir file('src/envDev/java')
            manifest.srcFile 'src/envDev/AndroidManifest.xml'
            res.srcDir file('src/envDev/resources')
        }

        envQa {
            java.srcDir file('src/envQa/java')
            manifest.srcFile 'src/envQa/AndroidManifest.xml'
            res.srcDir file('src/envQa/resources')
        }

        envLive {
            java.srcDir file('src/envLive/java')
            manifest.srcFile 'src/envLive/AndroidManifest.xml'
            res.srcDir file('src/envLive/resources')
        }

        instrumentTest {
            java.srcDir  file('src/test/java')
            res.srcDir  file('src/test/resources')
        }
        instrumentTestEnvDev {
            java.srcDir file('src/testEnvDev/java')
            res.srcDir file('src/testEnvDev/resources')
        }
        instrumentTestEnvQa {
            java.srcDir file('src/testEnvQa/java')
            res.srcDir file('src/testEnvQa/resources')
        }
        instrumentTestEnvLive {
            java.srcDir file('src/testEnvLive/java')
            res.srcDir file('src/testEnvLive/resources')
        }

    }

क्या कोई इस समस्या का सामना करने के लिए हाथ दे सकता है?

धन्यवाद


मुझे रोबॉलिक्रिक v2.3-SNAPSHOT के साथ भी यही समस्या थी इसे स्पष्ट रूप से टेस्ट फ़ाइल में मेनिफेस्ट को कॉन्फ़िग एनोटेशन के माध्यम से सेट करके हल किया, जैसे

@Config(manifest = "src/main/AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
public class MainActivityTest extends AndroidTestCase {
...
}

अंत में मैंने इसे रोबॉलिक्रिक v2.3-SNAPSHOT तक ले जाने में हल किया।

आप इस SNAPSHOT को यहां पा सकते हैं oss.sonatype.org/index.html#nexus-search;quick~org.robolectric

वही जेक व्हार्टन प्लग इन इस रोबोटैक्टिक v2.3-SNAPSHOT के साथ अच्छी तरह से काम करता है।

शायद यह जानकारी किसी और को मदद दे सकती है





robolectric