Nat*_*han 6 java android unit-testing
我的FragmentActivity
电话getActionBar()
在onCreate()
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_expense);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
这通常在模拟器或设备上运行应用程序时工作正常.但是,当我用a测试Activity时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);
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么getActionBar()
单元测试返回null?
这是设计的一部分。您是否尝试过使用 ActivityInstrumentationTestCase2 来代替?不能保证它会起作用,但有更好的机会。ActivityInstrumentationTestCase2 中可用的 Context 支持更多功能。
Android 中真正的单元测试很难进行。特别是对于活动,您应该允许自己“作弊”并进行功能测试。
归档时间: |
|
查看次数: |
824 次 |
最近记录: |