gpt4 book ai didi

android - bundle 放置和获取单元测试

转载 作者:行者123 更新时间:2023-11-28 20:28:21 27 4
gpt4 key购买 nike

我正在尝试进行测试以验证值是否已成功写入 Bundle

这是一个简单的类,它将在 Bundle 上写入一个 bool 值:

public class Coder {
public void serialize(Bundle bundle, String key, boolean value) {
bundle.putBoolean(key, value);
}
}

我想测试 serialize 方法,检查在使用 bundle.getBoolean(String) 调用方法后作为参数传递的 Bundle

我尝试使用 ArgumentCaptor 但没有成功:

Coder coder = mock(Coder.class);
Bundle bundle = mock(Bundle.class);

ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class);
coder.serialize(bundle, key, expectedValue);
verify(coder).serialize(bundleCaptor.capture(), eq(key), eq(expectedValue));

Bundle mockBundle = bundleCaptor.getValue();
assertEquals(expectedValue, mockBundle.getBoolean(key));

但是 mockBundle.getBoolean(key) 返回 false

如果我尝试不模拟 Bundle,我会在 mockBundle.getBoolean(key) 得到这个异常:

java.lang.RuntimeException:未模拟 android.os.BaseBundle 中的方法 getBoolean。

最佳答案

我认为你把它弄得太复杂了。

public class TestCoder {
@Test
public void testSerialize() {
Coder coder = new Coder();
Bundle bundle = new Bundle();
coder.serialize(bundle);
assertEquals(expectedValue, bundle.getBoolean(key));
}
}

关于android - bundle 放置和获取单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42404095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com