getActionBar()正常工作的设备/模拟器但在测试用例返回null [英] getActionBar() works fine on devices/simulator but returns null in testcases
问题描述
应用程序支持 minSdk = 14
并动作条
每活动
。
应用程序工作正常,因为很长一段时间,并显示动作条
每活动
。现在我写的Android 的JUnit
测试用例
,但它给了 NullPointException
在线
getActionBar()setDisplayHomeAsUpEnabled(真)。
底线是 getActionBar()
在测试用例工程设备,但回报率空
。如果删除该行,然后测试用例都很好。
下面是如何活动的样子。
保护无效的onCreate(包savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.activity_order); getActionBar()setDisplayHomeAsUpEnabled(真)。
在它之下//其他的东西
}
JUnits
是简单的Android的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屋!