我有以下代码来获取当前系统内存:
val memClass = (context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).memoryClass
我最初的目标是在测试中为它返回一个Int
值。像这样的东西:
whenever((context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).memoryClass)
.thenReturn(500)
由于它是一个 jUnit 测试并涉及使用Context
,我最终嘲笑了一切:
val context: Context = mock()
val activityService: Service = mock()
whenever(context.getSystemService(Context.ACTIVITY_SERVICE))
.thenReturn(activityService)
whenever((context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).memoryClass)
.thenReturn(500)
现在的问题是Mockito
无法创建类型转换ActivityManager
并抛出此错误:
java.lang.ClassCastException: android.app.Service$MockitoMock$594525704 cannot be cast to android.app.ActivityManager
我也尝试模拟 ActivityManager 但它不能用作类型转换:
我没有坚持使用当前解决方案的具体要求。我会欣赏一种更好的方法来实现我的初始目标。