问题描述
测试方法
@Test
fun firebaseRecordException_whenCallReportApiErrorNonFatal_shouldCallOnlyOnce() {
val exception = Exception("Exception Message: Backend API error")
donothing().
`when`(firebaseCrashlytics).setCustomKey(eq("Exception Message: "),eq("Backend API error"))
donothing().
`when`(firebaseCrashlytics).recordException(eq(exception))
firebaseLogServiceImplementation.reportApiErrorNonFatal(
"Exception Message: Backend API error",LogError.BackendAPIError,null,null
)
// Verify
verify(firebaseCrashlytics,times(1)).recordException(eq(exception))
}
使用此测试方法,我需要验证 firebaseCrashlytics.recordException(exception)
方法调用了一次。
override fun reportApiErrorNonFatal(exceptionCause: String,error: LogError,body: String ?,requestId : String ? ) {
val exception = Exception(exceptionCause)
firebaseCrashlytics.setCustomKey(EXCEPTION_MESSAGE,error.getErrorMessage())
// The request id will be helpful to investigate the exact error
requestId?.let {
FirebaseCrashlytics.getInstance().setCustomKey(REQUEST_ID,it)
}
// The full body will be helpful to investigate the exact error
body?.let {
FirebaseCrashlytics.getInstance().setCustomKey(EXCEPTION_BODY,it)
}
firebaseCrashlytics.recordException(exception)
}
这是我用来向 firebase 报告非致命异常的方法。
测试用例的错误日志
Argument(s) are different!Wanted:
firebaseCrashlytics.recordException(
java.lang.Exception: Exception Message: Backend API error
);
-> at com.google.firebase.crashlytics.FirebaseCrashlytics.recordException(FirebaseCrashlytics.java: 284)
Actual invocations have different arguments:
firebaseCrashlytics.setCustomKey(
"Exception Message: ","Backend API error"
);
-> at jp.co.rakuten.pointclub.android.services.log.FirebaseLogServiceImplementation.reportApiErrorNonFatal(FirebaseLogServiceImplementation.kt: 27)
firebaseCrashlytics.recordException(
java.lang.Exception: Exception Message: Backend API error
);
-> at jp.co.rakuten.pointclub.android.services.log.FirebaseLogServiceImplementation.reportApiErrorNonFatal(FirebaseLogServiceImplementation.kt: 33)
Comparison Failure: <Click to see difference >
Argument(s) are different!
Wanted:
firebaseCrashlytics.recordException(
java.lang.Exception: Exception Message: Backend API error
);
-> at com.google.firebase.crashlytics.FirebaseCrashlytics.recordException(FirebaseCrashlytics.java: 284)
Actual invocations have different arguments:
firebaseCrashlytics.setCustomKey(
"Exception Message: ","Backend API error"
);
-> at jp.co.rakuten.pointclub.android.services.log.FirebaseLogServiceImplementation.reportApiErrorNonFatal(FirebaseLogServiceImplementation.kt: 27)
firebaseCrashlytics.recordException(
java.lang.Exception: Exception Message: Backend API error
);
-> at jp.co.rakuten.pointclub.android.services.log.FirebaseLogServiceImplementation.reportApiErrorNonFatal(FirebaseLogServiceImplementation.kt: 33)
at com.google.firebase.crashlytics.FirebaseCrashlytics.recordException(FirebaseCrashlytics.java: 284)
这里显示比较失败。但我无法理解 firebaseCrashlytics.setCustomKey 如何进行比较,因为我只需要验证 firebaseCrashlytics.recordException。
如果有人知道我做错了什么。这对我来说将是一个很大的帮助。提前致谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)