如何解决mockito,如何验证静态成员函数
有一个在内部生成错误消息的类并使用 android,util.Log.i(String,String)
的静态函数记录错误(它可能是其他一些静态函数来记录失败)。
class Util {
public static void handleIntent(Intent intent,String Tag,String failMsg) {
...
if (true) { // for test
String s = failMsg; //getError(failCode);
Log.i(Tag,s);
}
...
}
}
并且测试是为了验证错误消息是否被记录(使用 mockito-inline 3.8.0):
@Test
public void test_log() {
try (MockedStatic<Log> logMock = Mockito.mockStatic(Log.class)) {
Intent intent = getIntent();
// test
Util.handleIntent(intent,"theTag","+++TEST1");
// verify
Mockito.verify(logMock,times(1)).i(eq(theTag),eq("+++TEST1")); //<== does not compile
Log.i(eq("+++TEST1"),eq(dataStr));
}
}
如何模拟 android.util.Log
并验证其 static android.util.Log.i(String,String)
已被字符串调用?
(powermock 不是选项。它使用的是powermock,在将mockito 更新到3.8.0 和powermock 到2.0.9 后,它开始出现很多错误,并建议将powermock 替换为mockito-inline。 )
解决方法
您可以在测试指令之前添加“logMock.when”指令。
,这有效:
try (MockedStatic<Log> logMock = Mockito.mockStatic(Log.class)) {
// test
Util.handleIntent(intent,"theTag","+++TEST1");
logMock.verify(() -> Log.i(eq("theTag"),eq("+++TEST1"),times(1));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。