2013-02-11 183 views
2

我有一个测试类,但总是得到NullPointerExceptiontearDown(),有谁知道为什么?solo.finishOpenActivities()始终为空

public class LaunchManagerActivityTest extends ActivityInstrumentationTestCase2<LaunchManagerActivity> { 

    private Solo solo; 

    public LaunchManagerActivityTest() { 
     super(LaunchManagerActivity.class); 
    } 

    @Override 
    protected void setUp() throws Exception { 
     super.setUp(); 

     solo = new Solo(getInstrumentation(), getActivity()); 
    } 

    @Override 
    protected void tearDown() throws Exception { 
     super.tearDown(); 
     solo.finishOpenedActivities(); 
    } 

    public void testOne() { 

    } 

    public void testTwo() { 

    } 

回答

12
@Override 
    protected void tearDown() throws Exception { 
     super.tearDown(); 
     solo.finishOpenedActivities(); 
    } 

实际上应该是:

@Override 
    protected void tearDown() throws Exception { 
     solo.finishOpenedActivities(); 
     super.tearDown(); 
    } 

的超级计算机拆机将关闭得到推出,但随后robotium会感到困惑,因为它认为一个活动是开放的活动,当它试图做与它的东西,它是空的。

+0

你做了我的一天。 – Eugene 2013-02-11 10:02:19

+0

随时upvote并接受我所有的答案,让我回来! – 2013-02-11 10:04:00

+0

当在ActivityInstrumentationTestCase2中调用super.teardown()和solo.finishOpenedActivities()时,我在android 2.3.3中遇到了一些问题。只有调用其中一个,才能让我的测试在随机时间不崩溃整个测试过程的情况下运行。 – 2013-08-29 14:57:03