簡體   English   中英

ActivityUnitTestCase getActionBar()返回null

[英]ActivityUnitTestCase getActionBar() returns null

我的FragmentActivityonCreate()調用getActionBar() onCreate()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_expense);
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

在模擬器或設備上正常運行應用程序時,此方法可以正常工作。 但是,當我使用ActivityUnitTestCase測試ActivityUnitTestCasegetActionBar()始終返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM