java JUnit测试断言逻辑
我使用JUnit 4测试这个简单的代码块:
import java.util.StringTokenizer;
import org.springframework.util.StringUtils;
import junit.framework.TestCase;
public class StringUtilsTestSuite extends TestCase {
public StringUtilsTestSuite(String name) {
super(name);
}
public void testCommaDelimitedListToStringArrayNullProducesEmptyArray(){
String[] sa = StringUtils.commaDelimitedListToStringArray(null);
assertTrue("String array isn't null with null input", sa != null);
assertTrue("String array length == 0 with null input", sa.length == 0);
}
}
测试运行时没有错误。我的问题是为什么第一个断言成功通过,我无法理解前面代码背后的逻辑:
String[] sa = StringUtils.commaDelimitedListToStringArray(null);
# 1 楼答案
开始阅读documentation了解任何方法的用法。 如果您有兴趣了解它是如何实现的,我建议grepcode
# 2 楼答案
从StringUtils的官方文件中——
在您的示例中,
sa[]
现在是空的,但不是空的,这就是它通过第一个断言测试的原因http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/StringUtils.html#commaDelimitedListToStringArray-java.lang.String-
# 3 楼答案
StringUtils。CommadeLimitedListToStringaray()的实现使得它不会返回null,当给定null字符串时,它会传回一个空数组
例如: