UnitTest中新Message()与Message.obtain(...)之间的区别

时间:2019-06-18 06:49:04

标签: android unit-testing junit android-handler

我正在为将Handler作为参数的方法编写UnitTest,做一些工作,最后使用android.os.Message,如下所示:

Message m = Message.obtain(handler, code, payload)
m.sendToTarget()

此代码在运行时按预期工作,但是在单元测试中运行时,在调用sendToTarget时会抛出NullPointerException。

如果我使用可用的公共(但不建议使用Javadoc)构造函数创建消息,则:

Message m = new Message();
m.setTarget(handler);
m.what = code;
m.obj = payload;

一切正常,没有NullPointerException。

在单元测试中,静态工厂方法Message.obtain(...)有什么问题?有什么我应该做些不同的事情,以便能够使用推荐的方法从池中获取消息而不是创建新消息。

0 个答案:

没有答案