java - ActivityUnitTestCase getActionBar() 返回 null

标签 java android unit-testing

我的 FragmentActivityonCreate() 中调用 getActionBar():

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

在模拟器或设备上正常运行应用程序时,这工作正常。但是,当我使用 ActivityUnitTestCase 测试 Activity 时,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 中可用的 Context 支持更多功能。

Android 中的真正单元测试很难做到。特别是对于 Activity,您应该允许自己“作弊”并改为进行功能测试。

关于java - ActivityUnitTestCase getActionBar() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13218568/

相关文章:

java - 结束 Activity 时需要丢弃哪些元素?

java - Android 广告请求。字符串数组中的关键字

java - 浮桥游戏迷失在代码中

Android Recyclerview项目Textview不会显示在某些项目中

android - 在可重用布局中单击处理我的按钮有什么问题?

angular - 在 angular2 中使用 ts-mockito 模拟 getter

java - 如何在 Cassandra 中使用 Spark 获取行范围

java - 无法运行 arquillian 测试

java - 使用 Mockito 对父类(super class)方法的调用进行 stub (V 1.9.5)

java - Android Studio 在警报对话框中显示图像