6

के कारण विफल रहा है, मैं एंड्रॉइड स्टूडियो 1.5.1 में एस्प्रेसो 2.2.1 के साथ परीक्षण चलाने का प्रयास करता हूं। जब मैं LoginActivityTest चलाता हूं तो मुझे यह त्रुटि मिलती है: "android.content.res.Resources $ NotFoundException" जब लॉगिन एक्टिविटी MyService.java और MyService को पूर्णांक संसाधनों की आवश्यकता होती है (यानी R.integer.number_of_days)। यह संसाधन R.integer.xml फ़ाइल में एक gradle (संस्करण 1.5.0) मॉड्यूल में परिभाषित किया गया है।

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

RootFolder/ ├----projectA/ │ ├----build.gradle │ ├----settings.gradle │ └----src/androidTest/java/.../LoginActivityTest │ └----src/main/java/.../LoginActivity │ └----Module/ ├----krill/ │ └----build.gradle │ ├----settings.gradle │ └----src/main/ | └----java/service/MyService.java | └----res/value/integers.xml │ └----otherModule/ └----build.gradle

मेरा परीक्षण वर्ग:

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class LoginActivityTest extends ActivityInstrumentationTestCase2<LoginActivity >{ 

@Rule 
public ActivityTestRule<LoginActivity> mActivityRule = new ActivityTestRule(LoginActivity.class); 

public LoginActivityTest() { 
    super(LoginActivity.class); 
} 

@Test 
public void testConfigDialog() { 
    onView(withId(R.layout.login_custom_view)); 

    onView(withId(R.id.id_username)).perform(clearText()); 
    onView(withId(R.id.id_password)).perform(clearText()); 
} 
} 

त्रुटि स्टैकट्रेस: ​​

Running tests 
Test running started 
android.content.res.Resources$NotFoundException: Resource ID #0x7f090004 
at android.content.res.Resources.getValue(Resources.java:1233) 
at android.content.res.Resources.getInteger(Resources.java:989) 
at it.insoft.android.lib.auth.infrastructure.AuthenticatorPreferences.<init>(MyService.java:36) 
at it.insoft.android.lib.auth.infrastructure.AuthenticatorPreferences.getInstance(MyService.java:45) 
at it.insoft.android.lib.auth.application.BaseLoginActivity.onCreate(BaseLoginActivity.java:27) 
at it.insoft.android.novae.application.LoginActivity.onCreate(LoginActivity.java:57) 
at android.app.Activity.performCreate(Activity.java:5937) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
at android.support.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:534) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
at android.app.ActivityThread.access$800(ActivityThread.java:144) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5221) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 


java.lang.RuntimeException: Unable to start activity ComponentInfo{it.insoft.android.novae/it.insoft.android.appname.application.LoginActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f090004 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
at android.app.ActivityThread.access$800(ActivityThread.java:144) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5221) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f090004 
at android.content.res.Resources.getValue(Resources.java:1233) 
at android.content.res.Resources.getInteger(Resources.java:989) 
at it.insoft.android.lib.auth.infrastructure.AuthenticatorPreferences.<init>(AuthenticatorPreferences.java:36) 
at it.insoft.android.lib.auth.infrastructure.AuthenticatorPreferences.getInstance(MyService.java:45) 
at it.insoft.android.lib.auth.application.BaseLoginActivity.onCreate(BaseLoginActivity.java:27) 
at it.insoft.android.novae.application.LoginActivity.onCreate(LoginActivity.java:57) 
at android.app.Activity.performCreate(Activity.java:5937) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
at android.support.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:534) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
... 10 more 

Test running failed: Instrumentation run failed due to 'android.content.res.Resources$NotFoundException' 

मैं इस समस्या को कैसे ठीक कर सकता हूं?

+0

और यदि आप एक ही क्रिया को मैन्युअल रूप से (स्वयं द्वारा) करते हैं तो यह ठीक काम करता है? – Sufian

+0

यदि मैं ऐप चलाता हूं (परीक्षण के बिना), तो सब ठीक काम करता है। मुझे यकीन नहीं है कि मैं आपके प्रश्न का उत्तर देता हूं। – Insoft

+0

मुझे 'classpath' com.android.tools.build को अपडेट करने के बाद एक ही त्रुटि मिल रही है: gradle: 2.0.0-beta3''। ऐसा लगता है कि Google ने इसे अभी जारी किया है। कल मुझे यह समस्या नहीं थी :( – Hesam

उत्तर

1

यदि आप अपने परीक्षण में JUnit4 का उपयोग करते हैं और ActivityTestRule तो आपको ActivityInstrumentationTestCase2<LoginActivity> का विस्तार करने की आवश्यकता नहीं है और कन्स्ट्रक्टर की आवश्यकता नहीं है।

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class LoginActivityTest { 

    @Rule 
    public ActivityTestRule<LoginActivity> mActivityRule = new ActivityTestRule(LoginActivity.class); 

    @Test 
    public void testConfigDialog() { 
     onView(withId(R.layout.login_custom_view)); //you can't use layout id here there must be a view id 

     onView(withId(R.id.id_username)).perform(clearText()); 
     onView(withId(R.id.id_password)).perform(clearText()); 
    } 
} 

अद्यतन: तो यह इस तरह दिखना और फिर से कोशिश करेंगे अपने कोड को ठीक करें कोड

+1

यह काम नहीं करता है :(मुझे एक ही त्रुटि मिलती है। – Insoft

+0

मेरे अपडेट पर एक नज़र डालें, आप लेआउट आईडी का उपयोग नहीं कर सकते 'ऑन व्यू()' में। इसके अलावा इसमें कोई क्लिक नहीं है जैसे क्लिक करें या चेक करें। उस लाइन को हटाएं। – denys

+0

ठीक है, मैंने उस लाइन को हटा दिया है और मुझे एक ही त्रुटि मिलती है। मुझे लगता है क्योंकि गतिविधि टेस्टरूल लॉग इन एक्टिविटीज को निष्क्रिय करता है जो मायसेरी को कॉल करता है vce। तो समस्या परीक्षण testfonfigDialog विधि से पहले है। – Insoft

0

मैं एक ही समस्या थी में टिप्पणी देखते हैं, समस्या build.gradle

मैं में है डाउनग्रेड एस्प्रेसो

androidTestCompile 'com.android.support.test:runner:0.4.1' 
androidTestCompile 'com.android.support.test:rules:0.4.1' 
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' 
संबंधित मुद्दे