gpt4 book ai didi

java - JUnit4 TextUtils.isEmpty() 给出的结果与 String.isEmpty() 不同

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:17 24 4
gpt4 key购买 nike

我知道这很奇怪,但这就是我所拥有的。

enter image description here

我正在编写单元测试来检查 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;
}

我有以下配置:jdk 1.8.0_77

我想避免在应用程序中支持 String.isEmpty() 的整个逻辑只是为了通过测试,因为我需要支持 Android API 9 之前的代码,而 String.isEmpty 不是可用,而且 TextUtils.isEmpty() 做更多。任何有关澄清和建议的帮助都会有所帮助。

有人遇到过吗?我该如何解决?提前致谢!

最佳答案

对于将来要面对的人:

我在好人的帮助下弄明白了,它与gradle中的android单元测试配置有关:

testOptions {
unitTests.returnDefaultValues = true
}

这为我指出了一个解决方案:摆脱您正在使用 JUnit(单元测试)测试的业务逻辑中的 android 依赖项。

我只是将 android.text.TextUtils 替换为我自己在 MyStringUtils.java 类中的方法,效果相同。

问题是 Android 方法在运行单元测试时默认返回默认值,并且它实际上并没有检查 fromFile 值本身,而是返回 stub /默认值。

关于java - JUnit4 TextUtils.isEmpty() 给出的结果与 String.isEmpty() 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com