का उपयोग कर मैं एंड्रॉइड परीक्षण के लिए नया हूं और मैं एक मॉककॉन्टेक्स्ट का उपयोग करके एक एप्लीकेशन टेस्टकेस बनाने की कोशिश कर रहा हूं (वास्तव में मैं एक रेनमिंग मॉक संदर्भ का उपयोग करने की कोशिश कर रहा हूं)। लेकिन मैं एक AssertionFailedError मिल रहा है।एंड्रॉइड एप्लिकेशनटेस्टकेस एक मॉककॉन्टेक्स्ट
AppTests.java
package com.myProject.test;
import android.test.ApplicationTestCase;
public class AppTests extends ApplicationTestCase<MyApplication> {
public AppTests() {
super(MyApplication.class);
}
@Override
protected void setUp() throws Exception {
final RenamingMockContext mockContext = new RenamingMockContext(getContext());
setContext(mockContext);
createApplication();
}
}
MyApplication.java
package com.myProject.test;
import android.app.Application;
public class MyApplication extends Application {
public MyApplication() {
}
@Override
public void onCreate() {
super.onCreate();
}
}
RenamingMockContext.java
package com.myProject.test;
import android.content.Context;
import android.content.SharedPreferences;
import android.test.RenamingDelegatingContext;
import android.test.mock.MockContext;
public class RenamingMockContext extends RenamingDelegatingContext {
private static final String PREFIX = "test.";
public RenamingMockContext(Context context) {
super (new DelegatedMockContext(context), PREFIX);
//super(context, PREFIX);
}
private static class DelegatedMockContext extends MockContext {
private Context mDelegatedContext;
public DelegatedMockContext(Context context) {
mDelegatedContext = context;
}
@Override
public String getPackageName() {
return mDelegatedContext.getPackageName();
}
@Override
public SharedPreferences getSharedPreferences(
String name, int mode) {
return mDelegatedContext.getSharedPreferences(
PREFIX + name, mode);
}
}
}
विफलता ट्रेस::
junit.framework.AssertionFailedError
at android.test.ApplicationTestCase.setupApplication(ApplicationTestCase.java:102)
at android.test.ApplicationTestCase.createApplication(ApplicationTestCase.java:118)
at com.myApplication.test.AppTests.setUp(AppTests.java:14)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1710)
0 यहाँ मेरी बहुत ही बुनियादी कोड अब तक है
ध्यान दें कि अगर मैं RenamingMockContext कन्स्ट्रक्टर में दूसरी सुपर() कॉल का उपयोग करता हूं, तो टिप्पणी की गई है (इसलिए विस्तृत MockContext क्लास का उपयोग न करें) यह ठीक काम करता है।
यहां एक संदर्भ UnsupportedOperationException while calling getSharedPreferences() from unit test है जो मेरे लिए काम नहीं करता है, और मैंने एंड्रॉइड एप्लिकेशन टेस्टिंग गाइड को भी पढ़ा है, जो इस तरह एक उदाहरण देता है, लेकिन जब मैंने स्रोत डाउनलोड किया और इसे सीधे चलाया तो यह वही दिया त्रुटि।
मैं ContextWrapper का विस्तार करके इस हल:
सेटअप विधि के कुछ लाइनों परीक्षण काम कर पाने के लिए टिप्पणी की जानी चाहिए। मेरा जवाब यहां देखें - http://stackoverflow.com/a/19710382/201113 – barry