Kotlin Lint 测试失败,即使它在生产中有效
Kotlin Lint Test fails, even though it works in production
我正在创建一个问题,如下所示:
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));
当我 assemble 这个 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())
}
但我得到的实际结果是"no warnings"。
我是否以某种方式传递了错误的存根?如何诊断生产和测试场景之间差异的原因?我对 LintChecks 的其他测试都通过了,而且据我所知它们看起来完全相同
原来 import com.example.package.Prefs
没有工作,因为我的 lint-check 测试 class 没有访问这个包。因此 Prefs
class 不被认为是有效的 class,因此 putBoolean()
方法不被认为是有效的评估方法。
这里不建议添加依赖。相反,您应该在测试 class 中创建的存根中定义自己的 class,如下所示:
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 拾取为正确包的有效方法,这意味着可以注册警告。
我正在创建一个问题,如下所示:
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));
当我 assemble 这个 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())
}
但我得到的实际结果是"no warnings"。
我是否以某种方式传递了错误的存根?如何诊断生产和测试场景之间差异的原因?我对 LintChecks 的其他测试都通过了,而且据我所知它们看起来完全相同
原来 import com.example.package.Prefs
没有工作,因为我的 lint-check 测试 class 没有访问这个包。因此 Prefs
class 不被认为是有效的 class,因此 putBoolean()
方法不被认为是有效的评估方法。
这里不建议添加依赖。相反,您应该在测试 class 中创建的存根中定义自己的 class,如下所示:
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 拾取为正确包的有效方法,这意味着可以注册警告。