我是Android測試新手,我正在嘗試使用 MockContext ( 實際上我正在嘗試使用重命名模擬上下文) 創建一個 ApplicationTestCase 。 但我一直在找一個 AssertionFailedError 。 以下是我目前最基本的代碼:

AppTests.javapackage com.myProject.test;

import android.test.ApplicationTestCase;

public class AppTests extends ApplicationTestCase {

public AppTests() {

super(MyApplication.class);

}

@Override

protected void setUp() throws Exception {

final RenamingMockContext mockContext = new RenamingMockContext(getContext());

setContext(mockContext);

createApplication();

}

}

MyApplication.javapackage com.myProject.test;

import android.app.Application;

public class MyApplication extends Application {

public MyApplication() {

}

@Override

public void onCreate() {

super.onCreate();

}

}

RenamingMockContext.javapackage 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)

注意如果我在RenamingMockContext構造函數中使用第二個 super() 調用,它被註釋掉了( 所以不要使用擴展的MockContext類) 。

Logo

一站式 AI 云服务平台

更多推荐