如何在 Android UnitTests 中使用 SpannableString

Tho*_*ena 5 testing android unit-testing spannablestring

我只是偶然发现了一个问题,我还没有找到解决方案,所以我想我会问你:)

假设我有以下方法(Kotlin):

fun getValue(): SpannableString {

    val value = "MyTestValue"
    val subString = "Test"

    // init spannable string
    val spannableString = SpannableString(value)

    // get position of substring
    val position = value.indexOf(subString)

    // insert span
    spannableString.setSpan(BackgroundColorSpan(ContextCompat.getColor(context, R.color.yellow)), position, position + subString.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

    // return result
    return spannableString
}
Run Code Online (Sandbox Code Playgroud)

这是我的单元测试方法:

@Test
fun `value | on filter | returns correct value`() {

    // define mock behavior
    val model = TestUtils.getTestModel() //returns a test model

    // init Observable
    val observable = TestObservable(model)

    // check assertions
    assertEquals("???", observable.getValue()) // I don't know what to expect here
}
Run Code Online (Sandbox Code Playgroud)

如果我现在想在单元测试中检查这个方法,我总是得到 'null' 作为响应,因为 SpannableString 返回这个值。我知道我可以在 androidTest 上下文中运行测试,但是单元测试无关紧要(在我看来)。

我认为应该有一些方法可以在不运行模拟器的情况下进行测试。

有什么建议?