Как получить Spannable и его цвет из TextView для записи unit test

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);
}

Я пытаюсь написать unit test (используя Robolectric) для TextView tv, чтобы гарантировать, что wordTwo - Color.RED. Тем не менее, у меня есть только ссылка на TextView tv. Как можно решить такую ​​задачу?

Ответ 1

Вы можете получить цвет Spannable от TextView с помощью метода getSpans()

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