[英]Unable to read the metadata of AndroidManifest.xml in unit test cases
我正在為我的android應用程序編寫本地單元測試用例。 在其中一個測試用例中,我需要讀取AndroidManifest.xml中定義的元數據的內容
我可以通過在運行應用程序時調用這些方法 - metadata.getString()/ metadata.getBoolean()來輕松讀取數據
我無法在單元測試中訪問相同的內容。 在maifest中定義的所有鍵的值在此處顯示為null。
在下面的代碼中, 正確創建了對象ai,res為null,aM為null,
元數據不為null,並且具有清單文件中定義的hub_url,enable_transmission和authentication的值。
奇怪的是,當我嘗試訪問變量a,b和c中的元數據內容時,所有都為空
val context = ApplicationProvider.getApplicationContext<Context>()
val ai = context!!.packageManager.getApplicationInfo( context.packageName, PackageManager.GET_META_DATA)
val res = ai.metaData.getBoolean( context.getString(R.string.enable_transmission))
val aM = ai.metaData.get( context.getString(R.string.enable_transmission))
val metadata = ai.metaData!!;
val a = metadata.getString(context.getString(R.string.hub_url))
val b = metadata.get(context.getString(R.string.enable_transmission));
val c = metadata.get(context.getString(R.string.authentication));
這是清單文件內容
<application>
<meta-data
android:resource="@string/basic"
android:name="@string/authentication"
android:value="@string/basic" />
<meta-data
android:resource="@string/hub_url"
android:name="@string/hub_url"
android:value="@string/hub_url" />
<meta-data
android:resource="@bool/enable"
android:name="@string/enable_transmission"
android:value="@bool/enable" />
</application>
試試這段代碼,
val context = applicationContext
val ai = context!!.packageManager.getApplicationInfo( context.packageName, PackageManager.GET_META_DATA)
val metadata = ai.metaData!!
val res = metadata.get( context.getString(R.string.enable_transmission))
val aM = metadata.get(context.getString(R.string.enable_transmission))
在manifest元數據標簽中僅使用android:value不使用android:resource而不是以對象直接轉換為特定格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.