我正在尝试创建一个简单的Android Activity测试,该测试检查单击按钮时是否启动了新的Activity。的代码:NoClassDefFoundError FragmentActivity test
public class LoginActivityTest extends ActivityInstrumentationTestCase2<LoginActivity> {
public LoginActivityTest() {
super(LoginActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
setActivityInitialTouchMode(false);
mActivity = getActivity();
mLoginButton = (Button) mActivity.findViewById(R.id.login_button);
mSkipButton = (Button) mActivity.findViewById(R.id.skip_button);
}
{...}
public void testSkipButton() {
Instrumentation.ActivityMonitor monitor =
getInstrumentation().addMonitor(
"com.mycompany.myproject.view.QuestionsActivity", null, false);
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
mSkipButton.requestFocus();
mSkipButton.performClick();
}
});
QuestionsActivity nextActivity =
(QuestionsActivity) getInstrumentation().waitForMonitorWithTimeout(monitor, 20);
assertNotNull(nextActivity);
nextActivity.finish();
}
private LoginActivity mActivity;
private Button mLoginButton;
private Button mSkipButton;
}
当我到waitForMonitorWithTimeout()一个NoClassDefFoundException上升。
重要的是要考虑到QuestionsActivity(这应该是启动的活动)是FragmentActivity,而不是一个活动是很重要的,但是从FragmentActivity继承的活动,所以我真的不明白发生了什么那里。也许InstrumentationTest不能处理Fragments或FragmentActivities。
mActivity是它正在测试的当前Activity,它是一个纯粹的Activity。
请帮忙!
你有supportLib包含在您的测试项目? –
是的,我有包括android-support-v4库。 – Luis
我试着用一个Activity作为目标而不是FragmentActivity,现在我在“nextActivity”中得到一个空值,所以assertNotNull失败。我不知道这是否工作... 随机我得到NullPointerExceptions当我运行2个测试,执行一个简单的点击没有检查... – Luis