moa*_*fee 4 android android-studio
当我运行我的测试时,我收到此错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.app.Instrumentation.setInTouchMode(boolean)'
在android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:100)
at com.example.my_project.MyActivityTest.setup(MyActivityTest.java:46)
这是我的代码:
@RunWith(AndroidJUnit4.class)
public class MyActivityTest extends ActivityInstrumentationTestCase2<MyActivity> {
private MyActivity myActivity;
// ...
public MyActivityTest() {
super(MyActivity.class);
}
@Before
public void setup() throws Exception {
super.setUp();
setActivityInitialTouchMode(true);
myActivity = getActivity();
}
Run Code Online (Sandbox Code Playgroud)
我也试过用这样的测试方法替换上面的大部分代码:
@Test
public void testActivityNotNull() {
MyActivity myActivity = getActivity();
assertNotNull(myActivity);
}
Run Code Online (Sandbox Code Playgroud)
但我得到了同样的错误.为什么会这样?
终于想通了.您需要添加以下代码行:
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
Run Code Online (Sandbox Code Playgroud)
在调用getActivity()之前.所以在你的情况下你会有这样的设置方法:
@Before
public void setUp() throws Exception {
super.setUp();
// Injecting the Instrumentation instance is required
// for your test to run with AndroidJUnitRunner.
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
mMainActivity = getActivity();
}
Run Code Online (Sandbox Code Playgroud)
已在官方文档中找到答案:http://developer.android.com/tools/testing-support-library/index.html#AndroidJUnitRunner
| 归档时间: |
|
| 查看次数: |
4151 次 |
| 最近记录: |