问题描述
使用 ShadowGoogleApiAvailability 的 Android 应用
object Util {
@JvmStatic
@WorkerThread
fun getAdsClientInfo(context: Context): AdvertisingIdClient.Info? {
val isGPAvailable =
GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context)
return if (isGPAvailable == ConnectionResult.SUCCESS) {
AdvertisingIdClient.getAdvertisingIdInfo(context) //<=== throws
} else null
}
}
在测试中:
@RunWith(RobolectricTestRunner.class)
public class TestAds{
public Application application;
@Before
public void setUp() throws Exception {
application = ApplicationProvider.getApplicationContext();
}
@Test
public void test_getAdsClientInfo() throws Exception {
final ShadowGoogleApiAvailability shadowGoogleApiAvailability
= Shadow.extract(GoogleApiAvailability.getInstance());
final int expectedCode = ConnectionResult.SUCCESS;
shadowGoogleApiAvailability.setIsGooglePlayServicesAvailable(expectedCode);
AdvertisingIdClient.Info info = Util.getAdsClientInfo(application);
......
}
}
它得到了 "IllegalStateException: Calling this from your main thread can lead to deadlock"
。
如何测试内部调用AdvertisingIdClient.getAdvertisingIdInfo
的函数?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)