Приложение поддерживает minSdk=14
и имеет ActionBar
на каждом Activity
.
Приложение давно работает нормально и показывает ActionBar
на каждые Activity
. Теперь я пишу Android JUnit
Testcases
, но он выдает NullPointException
в строке
getActionBar().setDisplayHomeAsUpEnabled(true);
Суть в том, что getActionBar()
работает на устройствах, но возвращает null
во время тестов. Если я удалю строку, то с тестовыми примерами все в порядке.
Вот как выглядит активность.
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_order); getActionBar().setDisplayHomeAsUpEnabled(true);
// другие вещи под ним
}
JUnits
— это простые тестовые примеры JUnit для Android без каких-либо фреймворков.
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);