getActionBar()正常工作的设备/模拟器但在测试用例返回null [英] getActionBar() works fine on devices/simulator but returns null in testcases

查看:153
本文介绍了getActionBar()正常工作的设备/模拟器但在测试用例返回null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

应用程序支持 minSdk = 14 动作条活动

应用程序工作正常,因为很长一段时间,并显示动作条活动。现在我写的Andr​​oid 的JUnit 测试用例,但它给了 NullPointException 在线

  getActionBar()setDisplayHomeAsUpEnabled(真)。
 

底线是 getActionBar()在测试用例工程设备,但回报率。如果删除该行,然后测试用例都很好。

下面是如何活动的样子。

 保护无效的onCreate(包savedInstanceState){
      super.onCreate(savedInstanceState);
      的setContentView(R.layout.activity_order);
      getActionBar()setDisplayHomeAsUpEnabled(真)。
 

     

在它之下//其他的东西

 }
 

JUnits 是简单的Andr​​oid的JUnit测试案例,没有任何框架。

 公共类OrderActivityTest扩展ActivityUnitTestCase< OrderActivity> {

  私人OrderActivity活动;

  公共OrderActivityTest(){
          超(OrderActivity.class);
    }

    保护无效设置()抛出异常{
         super.setUp();
         意向意图=新的意图(getInstrumentation()getTargetContext(),OrderActivity.class。);
         startActivity(意向,NULL,NULL);
         活性= getActivity();
    }

  公共无效测试preConditions(){
         assertTrue(活动!= NULL);
     }
 }
 

和在运行测试用例终于在这里是个例外。

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

176

行是 getActionBar()setDisplayHomeAsUpEnabled(真);

解决方案

getActionBar()可能返回null这里。标题必须是可见的,请确保你没有这样的事情有:

 安卓主题=@安卓风格/ Theme.Black.NoTitleBar
 

这会导致getActionBar(错误)被空。

Application supports minSdk=14 and have ActionBar on every Activity.

Application works fine since a long time and shows ActionBar on every Activity. Now I am writing Android JUnit Testcases but it gives NullPointException on line

  getActionBar().setDisplayHomeAsUpEnabled(true);

The bottom line is getActionBar() works on devices but returns null during test cases. If I remove the line then testcases are fine.

Here's how activity looks like.

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

// other stuff under it

 }

JUnits are simple Android JUnit Testcases without any framework.

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);    
     }  
 }

And finally here's the exception while running test case.

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)

Line 176 is getActionBar().setDisplayHomeAsUpEnabled(true);

解决方案

getActionBar() is probably returning null here. The title needs to be visible, make sure you don't have things like this there:

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

This would cause an error in getActionBar() being null.

这篇关于getActionBar()正常工作的设备/模拟器但在测试用例返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆