我目前有点困惑Intent
演员。 我知道所谓的临时演员是Bundle
而Bundle
在内部是一张地图。简单的意图 - jUnit测试失败
如果我在这张地图上放了一些东西,用intent.putExtra("someName", "someValue");
,我预计现在有一个名为“someName”的关键字出现在地图上。但根据我非常简单的单元测试,这不是。
public void testIntent(){
assertTrue("true != true", true);
assertFalse("false != false", false);
final String extraName = "IamAnExtra";
final String extraValue = "IamAValue";
Intent intent = new Intent();
intent.putExtra(extraName, extraValue);
assertTrue("hasExtra==false", intent.hasExtra(extraName));
}
现在的部份结果如下:
junit.framework.AssertionFailedError: hasExtra==false
什么样的神奇正在发生的意向代码后面? 我知道它正常工作。仅当我发送意图时,地图是否被缓存并写入 ?先谢谢你!
编辑:
我增加了行assertNotNull("extras == null", intent.getExtras());
这也将失败。
我查从方法putExtra
和getExtras
,这是代码:
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
和
public Bundle getExtras() {
return (mExtras != null)
? new Bundle(mExtras)
: null;
}
因此,如果成员mExtras为空,则返回null为getExtras。 但putExtra将为mExtras
创建一个新的Bundle实例,因此 mExtras
应该不为空。我很困惑。
您是将它作为_unit test_还是_instrumented test_运行?你在用什么框架,JUnit 4? – josemigallas
单元测试。我使用了一个正常的TestCase。 – JacksOnF1re
我认为使用普通的Intent可以和好的老单元一起使用,不是吗?我不会尝试发送它或其他东西。 – JacksOnF1re