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将替换现有值。见文件:有一个按钮可以这样说;)但是它没有解决你的问题,对吗?不,它没有回答问题