Я знаю, что это странно, но это то, что у меня есть.JUnit4 TextUtils.isEmpty() дает отличный результат, чем String.isEmpty()
Я пишу модульный тест, чтобы проверить свою логику для Android приложения. Во время выполнения теста, я вижу, что он не будет работать на этой линии:
if (!TextUtils.isEmpty(fromFile))
До этого if
заявление FromFile является равно ""
(пустая строка), но как-то она проходит через него и разрывы с другой логикой, Безразлично Не ожидайте пустую строку.
Дайвинг в отладку Я видел, что fromFile.isEmpty()
возвращает правильный результат, но TextUtils.isEmpty(fromFile)
говорит, что он не пуст.
Открытый исходный код, я вижу:
public static boolean isEmpty(@Nullable CharSequence str) {
if (str == null || str.length() == 0)
return true;
else
return false;
}
и String.java:
public boolean isEmpty() {
return value.length == 0;
}
Я следующий configutation: JDK 1.8.0_77
Я хотел бы избежать всей логику в приложении для поддержки String.isEmpty(), чтобы пройти тест, так как мне нужно поддерживать код перед Android API 9, где String.isEmpty
недоступен, и al поэтому TextUtils.isEmpty()
сделать больше. Любая помощь с разъяснениями и рекомендациями была бы полезна.
С кем-нибудь сталкивались? Как его исправить? Заранее спасибо!
Но это thi s решение? Я имею в виду, что для этого случая у вас есть только TextUtils, но что, если вы используете SparsArrays и некоторые другие пользовательские утилиты, предоставляемые Android? – karate
Идея чистых тестов JUnit заключается в том, что они должны использоваться против POJO (обычный старый Java-объект). 'SparseArrays' не являются старой Java. Если у вас есть это, вы можете пойти с http://robolectric.org/, который полностью соответствует требованиям google https://developer.android.com/training/testing/fundamentals.html –