这是我的单元测试。不知何故,当我使用非空字符串参数创建实例化SpannableStringBuilder实例时,它似乎为null。这段代码有什么问题?
public class CardNumberTextWatcherTest {
private CardNumberTextWatcher watcher;
@Before
public void setUp() throws Exception {
watcher = new CardNumberTextWatcher();
}
@Test
public void afterTextChanged_cardNumberDividedWithSpaces() {
assertTransformText("1111222233334444", "1111 2222 3333 4444");
}
private void assertTransformText(final String testStr,
final String expectedStr) {
final CardNumberTextWatcher watcher = new CardNumberTextWatcher();
final Editable actualStr = new SpannableStringBuilder(testStr);
// When I debug I see that actualStr value is null. Therefore test
//doesn't pass. What's the problem?
watcher.transformText(actualStr);
assertEquals(expectedStr, actualStr.toString());
}
}
答案 0 :(得分:1)
您正在调用actualStr.toString()
这是断言与之比较的内容,而不是actualStr
本身,因此请查看SpannableStringBuilder
之间的路由,以查看null
来自toString()
的内容{1}}。可能testStr
是null
。
答案 1 :(得分:0)
问题出在测试目录中。只要SpannableStringBuilder
是Android SDK的一部分,就无法在常规JUnit测试目录中解析它。当我将我的课程移到androidTest目录时,一切都开始按预期工作了。
答案 2 :(得分:0)
@RunWith(RobolectricTestRunner::class)
使用Robolectric解决了该问题。