2013-11-24 45 views
0

我正在尝试创建一个简单的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。

请帮忙!

+0

你有supportLib包含在您的测试项目? –

+0

是的,我有包括android-support-v4库。 – Luis

+0

我试着用一个Activity作为目标而不是FragmentActivity,现在我在“nextActivity”中得到一个空值,所以assertNotNull失败。我不知道这是否工作... 随机我得到NullPointerExceptions当我运行2个测试,执行一个简单的点击没有检查... – Luis

回答