簡體   English   中英

使用ActivityUnitTestCase進行活動單元測試

[英]Activity Unit testing using ActivityUnitTestCase

我正在嘗試使用ActivityUnitTestCase為活動方法編寫單元測試。 但是,總是在調用startActivity()時得到空指針異常。 下面是我的代碼。

我進行了調試,發現它總是返回null getInstrumentation().getTargetContext() 但是我真的不明白這里發生了什么。

public class ScoreBoardActivityTest extends ActivityUnitTestCase<ScoreBoardActivity> {

public ScoreBoardActivity activity;


public ScoreBoardActivityTest() {
    super(ScoreBoardActivity.class);
}

@Override
protected void setUp() throws Exception {
    super.setUp();
    startActivity(new Intent(getInstrumentation().getTargetContext(), ScoreBoardActivity.class), null, null);
    activity = getActivity();
}

@Test
public void testActivityNotNull(){
    Assert.assertNull(activity);
}

@Test
public void testBatsmanOneAddRunButtonClickUpdateTotalRuns(){
    activity.onBatsmanOneAddRunClick(null);
    Assert.assertEquals(activity.totalRuns, 1);
}
}

我在這里做錯了什么?

我還需要設置什么嗎?

我之前為ActivityUnitTestCase做了一個注釋:

// This will always be null with extends ActivityUnitTestCase<>
// home = getActivity();

您可以通過執行以下操作獲得上下文:

public class ScoreBoardActivityTest extends ActivityInstrumentationTestCase2<ScoreBoardActivity> {

    private ScoreBoardActivity scoreBoardActivity;

    public ScoreBoardActivityTest() {
        super(ScoreBoardActivity.class);
    }

    // Called before every test case method
    @Override
    protected void setUp() throws Exception {
        super.setUp();

        // Use here to start the activity anew before each test
        // Use in test methods should re-start the activity each time called or bring it back after
        // finishing or intents
        scoreBoardActivity = getActivity();
    }

另一個注意事項是ActivityUnitTestCase用於非常基本的測試。 它幾乎是無用的imo,不是我關心的東西。

ActivityInstrumentationTestCase2是允許使用活動的內容,如果我沒有記錯的話,它以getActivity()開始。

如果要具體查看上下文,則可能如下所示:

scoreBoardActivity.getApplicationContext()

但是您可以只使用scoreBoardActivity。

還要注意,測試是按字母順序進行的,因此您的testActivityNotNull()可能落后於其他測試,例如testAcorn或testAbat。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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