JUnit测试 - 断言逻辑

时间:2017-02-07 20:56:28

标签: java spring 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);

3 个答案:

答案 0 :(得分:1)

实现StringUtils.commaDelimitedListToStringArray()以便它不返回null,当给定空字符串时,它会传回一个空数组。

例如:

{{1}}

答案 1 :(得分:1)

从官方的StringUtils文档 -

Returns:
an array of strings, or the empty array in case of empty input

在您的示例中,sa[]现在为空,但不为空,这就是它通过第一个断言测试的原因。

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/StringUtils.html#commaDelimitedListToStringArray-java.lang.String-

答案 2 :(得分:0)

首先阅读documentation以了解任何方法用法。 如果您有兴趣了解它是如何实现的,我建议grepcode