Java 方法设置“;“不被嘲笑”;尝试在Android下测试按钮时出错
我正在尝试编写一个Android单元测试,测试按下MainActivity中的ImageButton是否会激发启动另一个活动(Activity2)的意图。这是我的密码:Java 方法设置“;“不被嘲笑”;尝试在Android下测试按钮时出错,java,android,unit-testing,android-activity,Java,Android,Unit Testing,Android Activity,我正在尝试编写一个Android单元测试,测试按下MainActivity中的ImageButton是否会激发启动另一个活动(Activity2)的意图。这是我的密码: public class MainActivityTest extends ActivityUnitTestCase<MainActivity> { private Intent activityLaunchIntent; public MainActivityTest(){ sup
public class MainActivityTest extends ActivityUnitTestCase<MainActivity> {
private Intent activityLaunchIntent;
public MainActivityTest(){
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
activityLaunchIntent = new Intent(getInstrumentation().getTargetContext(), MainActivity.class);
}
public void testPreconditions() {
assertNotNull(activityLaunchIntent);
}
/**
* Tests that the button to launch Activity2 fires the correct Intent.
*/
@MediumTest
public void testLaunchButton_shouldLaunchActivity2() {
startActivity(activityLaunchIntent, null, null);
final ImageButton launchActivity2Button = (ImageButton) getActivity().findViewById(R.id.launchButton);
launchButton.performClick();
// Ensure that the intent to start the Activity2 has been launched
final Intent launchActivity2Intent = getStartedActivityIntent();
assertNotNull(launchActivity2Intent);
assertTrue(launchActivity2Intent.getClass().equals(SettingsActivity.class));
assertTrue(isFinishCalled());
}
}
访问时,我在build.gradle文件中添加了以下内容:
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
但是,现在我得到了以下错误:
java.lang.RuntimeException: Method setUp in android.test.ActivityUnitTestCase not mocked. See http://g.co/androidstudio/not-mocked for details.
at android.test.ActivityUnitTestCase.setUp(ActivityUnitTestCase.java)
java.lang.NullPointerException
at com.example.unittesting.MainActivityTest.setUp(MainActivityTest.java:24)
顺便提一下,MainActivityTest.java的第24行是:
activityLaunchIntent = new Intent(getInstrumentation().getTargetContext(), MainActivity.class);
谁能告诉我这里发生了什么事?这是一个简单的解决方案吗?还是我用了一种完全错误的方式。提前感谢您的帮助