Moi FragmentActivity
połączeń getActionBar()
w onCreate()
:ActivityUnitTestCase getActionBar() zwraca NULL
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_expense);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Działa to dobrze podczas uruchamiania aplikacji normalnie na emulatorze lub na urządzeniu. Jednak gdy testuję działanie z wartością ActivityUnitTestCase
, getActionBar()
, zawsze zwracana jest wartość 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);
}
Czy ktoś wie, dlaczego getActionBar()
zwraca zero dla testów jednostkowych?
Zgadzam się ze stwierdzeniem, że testowanie jednostkowe nie działa dobrze w systemie Android. Naprawdę chcę kontrolować zawartość bazy danych z testu, więc czy można użyć 'RenamingDelegatingContext' z' ActivityInstrumentationTestCase2'? – Nathan