[英]ActivityUnitTestCase getActionBar() returns null
我的FragmentActivity
在onCreate()
調用getActionBar()
onCreate()
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_expense);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
在模擬器或設備上正常運行應用程序時,此方法可以正常工作。 但是,當我使用ActivityUnitTestCase測試ActivityUnitTestCase
, getActionBar()
始終返回null。
public class NewTransactionTest extends ActivityUnitTestCase<TransactionEditActivity> {
private RenamingDelegatingContext myContext;
private DatabaseHelper myHelper;
private RuntimeExceptionDao<Account,Long> myDao;
private Account myBankAccount1;
private Account myBankAccount2;
private Account myCategory1;
private Account myCategory2;
private Budget myBudget;
public NewTransactionTest() {
super(TransactionEditActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
myContext = new RenamingDelegatingContext(getInstrumentation().getTargetContext(), "test");
myContext.deleteDatabase(DatabaseHelper.DATABASE_NAME);
}
@UiThreadTest
public void testPreConditions() throws Throwable {
setActivityContext(myContext);
final TransactionEditActivity activity = startActivity(new Intent(), null, null);
}
有誰知道為什么getActionBar()
對於單元測試返回null?
這是設計的一部分。 您是否嘗試過使用ActivityInstrumentationTestCase2代替? 無法保證它會工作,但是有更好的機會。 ActivityInstrumentationTestCase2中提供給您的上下文支持更多功能。
很難在Android中進行真實的單元測試。 特別是對於活動,您應該允許自己“作弊”並進行功能測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.