Android SparseIntArray不';当使用机械分子测试时,不会发生变化

Android SparseIntArray不';当使用机械分子测试时,不会发生变化,android,android-testing,robolectric,Android,Android Testing,Robolectric,我不熟悉roblectric,我正在尝试对一个简单的getter/setter代码进行单元测试,但是当使用roblectric进行测试时,SparseIntArray似乎没有像预期的那样工作,而且它根本没有改变。(我总是使用get方法获取“0”) 我还尝试为SparseIntArray本身添加一个静态getter,发现调用setter后,数组大小为0 我错过了什么 这是我要测试的代码: public class MyClass { private static SparseIntArra

我不熟悉
roblectric
,我正在尝试对一个简单的getter/setter代码进行单元测试,但是当使用
roblectric
进行测试时,
SparseIntArray
似乎没有像预期的那样工作,而且它根本没有改变。(我总是使用get方法获取“0”)

我还尝试为
SparseIntArray
本身添加一个静态getter,发现调用setter后,数组大小为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));
}

原来在我使用的
Robolectric
版本中没有
SparseIntArray
的阴影。

原来在我使用的
Robolectric
版本中没有
SparseIntArray
的阴影。

您不需要在setStatus中获得delete put,put将替换现有值。见文件:有一个按钮可以这样说;)但是它没有解决您的问题,对吗?不,它没有回答问题您不需要在setStatus中获取delete put,put将替换现有值。见文件:有一个按钮可以这样说;)但是它没有解决你的问题,对吗?不,它没有回答问题