getActionBar()在设备/模拟器上工作正常,但在测试用例中返回null

时间:2014-04-21 01:53:51

标签: android android-actionbar android-testing

应用程序支持minSdk=14并且每ActionBar都有Activity

应用程序在很长一段时间内运行良好,并在每个ActionBar上显示Activity。现在我正在编写Android JUnit Testcases,但它在行上提供了NullPointException

  getActionBar().setDisplayHomeAsUpEnabled(true);

底线getActionBar()适用于设备,但在测试用例期间返回null。如果我删除该行,那么testcases就可以了。

以下是活动的样子。

protected void onCreate(Bundle savedInstanceState) {      
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_order);
      getActionBar().setDisplayHomeAsUpEnabled(true);
     

//其他东西

 }

JUnits是简单的Android JUnit测试用例,没有任何框架。

public class OrderActivityTest extends ActivityUnitTestCase<OrderActivity> {   

  private OrderActivity activity;

  public OrderActivityTest() {        
          super(OrderActivity.class);   
    }   

    protected void setUp() throws Exception {
         super.setUp();
         Intent intent = new Intent(getInstrumentation().getTargetContext(),OrderActivity.class);
         startActivity(intent, null, null);
         activity = getActivity();
    }

  public void testPreConditions() {
         assertTrue(activity != null);    
     }  
 }

最后这是运行测试用例时的异常。

java.lang.NullPointerException
at com.example.name.OrderActivity.onCreate(OrderActivity.java:176)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158)
at com.example.name.test.OrderActivityTest.setUp(OrderActivityTest.java:23)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)

第176行是getActionBar().setDisplayHomeAsUpEnabled(true);

1 个答案:

答案 0 :(得分:0)

getActionBar()可能在这里返回null。标题需要可见,请确保您没有这样的内容:

android:theme="@android:style/Theme.Black.NoTitleBar

这会导致getActionBar()中的错误为null。