1

私は初めてでRobolectric、単純なゲッター/セッターコードを単体テストしようとしていますがSparseIntArray、テスト時に期待どおりにRobolectric機能していないようで、単に変更されていません。(私は常に get メソッドで「0」を取得します)。

また、それ自体に静的ゲッターを追加しようSparseIntArrayとしましたが、セッターを呼び出した後、配列サイズが 0 であることがわかりました。

ここで何が欠けていますか?

これは私がテストしようとしているコードです:

public class MyClass {
    private static SparseIntArray sRequestStatus;

public static int getStatus(int request) {
    return sRequestStatus.get(request);
}

public static void setStatus(int request, int status) {
    if (sRequestStatus.get(request) != 0) {
        sRequestStatus.delete(request);
        sRequestStatus.put(request, status);
    } else {
        sRequestStatus.put(request, status);
    }
}

    static {
    sRequestStatus = new SparseIntArray();
    }
}

これがテストです:

@RunWith(RobolectricTestRunner.class)
public class MyClassTests {

@Test
public void testGetSetStatus() throws Exception {
    // get status should return 0 for non-exisiting request
    assertEquals(0, MyClass.getStatus(1));

    // set status should add a request mapping
    MyClass.setStatus(1, 1);
    assertEquals(1, MyClass.getStatus(1));

    // set status should change the request status if mapping exists
    MyClass.setStatus(1, 2);
    assertEquals(2, MyClass.getStatus(1));
}
4

1 に答える 1

1

SparseIntArray私が使用していた のバージョンにはShadow for がなかったことがわかりましたRobolectric..

于 2012-10-09T10:13:19.760 に答える