【问题标题】:How to get Spannable and its color from TextView to write a unit test如何从 TextView 获取 Spannable 及其颜色以编写单元测试
【发布时间】:2014-10-28 14:58:21
【问题描述】:
private void createStringEndingInRedColor(TextView tv, String word1, String word2) {
    Spannable word = new SpannableString(word1);
    tv.setText(word);

    Spannable wordTwo = new SpannableString(word2);

    wordTwo.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(Color.RED)), 0, wordTwo.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.append(wordTwo);
}

我正在尝试为 TextView 电视编写一个单元测试(使用 Robolectric),以确保 wordTwo 是 Color.RED。但是,我只有对 TextView tv 的引用。如何完成这样的任务?

【问题讨论】:

    标签: android textview robolectric


    【解决方案1】:

    您可以使用getSpans()方法从TextView获取Spannable的颜色

    ForegroundColorSpan[] colorSpans = ((SpannableString)textView.getText()).getSpans(0, textView.getText().length(), ForegroundColorSpan.class);
    assertTrue(colorSpans[0].getForegroundColor() == Color.RED)
    

    【讨论】:

    • 除非我使用 SpannedString 而不是 SpannableStringBuilder,否则我会遇到类转换异常。
    • 大家好,在这里。回想起来,这不是一个好的单元测试(它测试 Android 框架)。相反,创建一个新类:Colorizer。然后调用 verify(mColorizer).changeSecondWordToRed(textView, word1, word2)。
    猜你喜欢
    • 2013-09-01
    • 2012-02-03
    • 2019-01-28
    • 1970-01-01
    • 2011-03-16
    • 2011-09-30
    • 2011-05-30
    相关资源
    最近更新 更多