我正在創建一個問題,如下所示:public static final Issue ISSUE_PUT_BOOLEAN = Issue.create("NotUsingSet", "Don't use putPrimitive", "Use .set() instead.", Category.MESSAGES, 6, Severity.WARNING, new Implementation(WrongPrefUsageDetector.class, Scope.JAVA_FILE_SCOPE));當我組裝這個 Lint 并使用它時,它可以正常工作,如下所示:但是,當我嘗試測試該確切代碼時,測試沒有收到任何警告。這是我的測試:private val PUT_STUB = kotlin(""" |package com.example.package | |import com.example.package.Prefs | |private fun putPrimitive() { | Prefs(context).putBoolean("hi", true) |}""".trimMargin()) @Test fun usingPutBoolean() { lint() .files(PUT_STUB) .issues(WrongPrefUsageDetector.ISSUE_PUT_BOOLEAN) .run() .expect("""1 warning or anything""".trimMargin()) }但我得到的實際結果是“沒有警告”。我是否以某種方式傳遞了不正確的存根?如何診斷生產和測試場景之間差異的原因?我對 LintChecks 的其他測試都通過了,據我所知,它們看起來完全一樣
1 回答

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
事實證明它import com.example.package.Prefs沒有工作,因為我的 lint-check 測試類沒有訪問這個包的權限。因此,該類Prefs不被視為有效類,因此該putBoolean()方法不被視為有效的評估方法。
不建議在這里添加依賴項。相反,您應該在測試類中創建的 Stub 中定義自己的類,如下所示:
private val PREFERENCES_STUB_2 = kotlin("""
|package com.example.package
|
|class Prefs {
|
| fun putBoolean(key: String, value: Boolean) {}
|
| fun doWrongs() {
|
| Prefs().putBoolean("abc", true)
| }
|}""".trimMargin())
現在 putBoolean 方法被 Lint Issue 選擇為正確包的有效方法,這意味著可以注冊警告。
添加回答
舉報
0/150
提交
取消