My FragmentActivity
cuộc gọi getActionBar()
trong onCreate()
:ActivityUnitTestCase getActionBar() trả về null
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_expense);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
này hoạt động tốt khi chạy ứng dụng bình thường trên giả lập hoặc trên một thiết bị. Tuy nhiên, khi tôi kiểm tra Hoạt động với một số ActivityUnitTestCase
, getActionBar()
luôn trả về giá trị rỗng.
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);
}
Có ai biết tại sao getActionBar()
trả về null cho kiểm tra đơn vị?
Tôi đồng ý với tuyên bố của bạn rằng kiểm tra đơn vị không thực sự hoạt động tốt trong Android. Tôi thực sự muốn kiểm soát nội dung cơ sở dữ liệu từ thử nghiệm, vì vậy có thể sử dụng 'RenamingDelegatingContext' với' ActivityInstrumentationTestCase2' không? – Nathan