亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Kotlin Lint 測試失敗,即使它在生產中有效

Kotlin Lint 測試失敗,即使它在生產中有效

墨色風雨 2023-04-26 14:14:31
我正在創建一個問題,如下所示: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 選擇為正確包的有效方法,這意味著可以注冊警告。


查看完整回答
反對 回復 2023-04-26
  • 1 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號