作者:FXHT4564_845 | 来源:互联网 | 2023-05-17 17:00
我是Android Studio新手.我使用的是Android Studio 1.2预览版2,gradle 2.2.1和gradle插件1.1.0.
在尝试运行我的单元测试时,我无法解决此错误:
java.lang.RuntimeException: Method getInstrumentation in android.test.InstrumentationTestCase not mocked
这是我的测试类:
public class AppPreferencesTest extends InstrumentationTestCase {
AppPreferences preferences;
@Before
public void setUp() throws Exception {
preferences = new AppPreferences(getInstrumentation().getTargetContext());
}
...
在我的build.gradle中:
testCompile 'junit:junit:4.12'
我尝试添加这个
testOptions {
unitTests.returnDefaultValues = true
}
因为我在http://tools.android.com/tech-docs/unit-testing-support所遵循的步骤中提到过,
但它没有解决它.
我也试过创建一个MockContext:
preferences = new AppPreferences(new MockContext());
但AppPreferences的构造函数比给出错误
public AppPreferences(Context context) {
preferences = PreferenceManager.getDefaultSharedPreferences(
context);
}
...
RuntimeException: Method getDefaultSharedPreferences in android.preference.PreferenceManager not mocked.
Jared Burrow..
11
我看到你已经更新了你的问题.
请看一下这个来源SharedPreferencesMockContext.java
:https://github.com/applicake/Beandroid/blob/master/Beanstalk%20Android%20ClientTest/src/com/applicake/beanstalkclient/test/SharedPreferencesMockContext.java.
以下是测试:https:
//github.com/applicake/Beandroid/blob/master/Beanstalk%20Android%20ClientTest/src/com/applicake/beanstalkclient/test/NotificationsTests.java
这是一个片段展示他们如何创建他们的模拟:
@Override
protected void setUp() throws Exception {
final SharedPreferencesMockContext mockCOntext= new SharedPreferencesMockContext(getContext());
MockApplication mockApplication = new MockApplication(){
@Override
public Context getApplicationContext() {
Log.d("tests", "Im here");
return mockContext;
}
};
cOntext= mockContext;
setApplication(mockApplication);
prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().clear().commit();
super.setUp();
}
我昨晚遇到了这个错误.尝试使用" MockContext
".
public class AppPreferencesTest extends InstrumentationTestCase {
AppPreferences preferences;
Context context;
@Before
public void setUp() throws Exception {
cOntext= new MockContext();
preferences = new AppPreferences(context);
}
请在此处查看其他示例:https://stackoverflow.com/a/29063736/950427
1> Jared Burrow..:
我看到你已经更新了你的问题.
请看一下这个来源SharedPreferencesMockContext.java
:https://github.com/applicake/Beandroid/blob/master/Beanstalk%20Android%20ClientTest/src/com/applicake/beanstalkclient/test/SharedPreferencesMockContext.java.
以下是测试:https:
//github.com/applicake/Beandroid/blob/master/Beanstalk%20Android%20ClientTest/src/com/applicake/beanstalkclient/test/NotificationsTests.java
这是一个片段展示他们如何创建他们的模拟:
@Override
protected void setUp() throws Exception {
final SharedPreferencesMockContext mockCOntext= new SharedPreferencesMockContext(getContext());
MockApplication mockApplication = new MockApplication(){
@Override
public Context getApplicationContext() {
Log.d("tests", "Im here");
return mockContext;
}
};
cOntext= mockContext;
setApplication(mockApplication);
prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().clear().commit();
super.setUp();
}
我昨晚遇到了这个错误.尝试使用" MockContext
".
public class AppPreferencesTest extends InstrumentationTestCase {
AppPreferences preferences;
Context context;
@Before
public void setUp() throws Exception {
cOntext= new MockContext();
preferences = new AppPreferences(context);
}
请在此处查看其他示例:https://stackoverflow.com/a/29063736/950427