有两种方法可以做到这一点:
- 你转向 Powermock 或 Powermokito;因为这些模拟框架将允许您模拟/检查对 Log.e() 的静态调用。
- 您可以考虑替换静态调用。
例子:
interface LogWrapper {
public void e( whatever Log.e needs);
}
class LogImpl implements LogWrapper {
@Override
e ( whatever ) {
Log.e (whatever) ;
}
然后,您必须使用依赖注入来使LogWrapper
对象在您要记录的类中可用。对于正常的“生产”用法,该对象只是 ; 的一个实例LogImpl
。对于测试,您可以使用自己编写的 impl(跟踪发送给它的日志);或者您可以使用任何非强大的模拟框架(如 EasyMock 或 Mokito)来模拟它。然后您使用模拟框架的检查/验证方面来检查“使用预期参数调用日志”。
请注意:根据您的设置,选项 2 可能是多余的。但就我个人而言,我避免使用 Powermock。仅仅是因为我浪费了太多时间来寻找 Powermock 的奇怪问题。我喜欢做覆盖率测量;有时 Powermock 也会给你带来问题。
但是当您询问 Powermock 时,您基本上想看这里 (powermockito)或这里 (powermock)。并且记录在案:下次尝试使用您最喜欢的搜索引擎。这真的不像你是第一个问这个的人。