加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用Junit对边缘案例进行单元测试

发布时间:2020-12-15 08:27:07 所属栏目:Java 来源:网络整理
导读:我有一个名为StringProcessor的实用程序类.其中的breakLongWords()方法,只要字符序列缺少预定义长度的空格,就会向输入添加零宽度空格: public class StringProcessor { private static final int WORD_MAX_LENGTH = 40; public String breakLongWords(CharS
我有一个名为StringProcessor的实用程序类.其中的breakLongWords()方法,只要字符序列缺少预定义长度的空格,就会向输入添加零宽度空格:

public class StringProcessor {

    private static final int WORD_MAX_LENGTH = 40;

    public String breakLongWords(CharSequence input) {
        // add a zero-width space character after a word
        // if its length is greater than WORD_MAX_LENGTH and doesn't have any space in it
    }
}

静态字段WORD_MAX_LENGTH是一个实现细节,不应暴露给其他类(包括测试类).

现在,如何在不访问WORD_MAX_LENGTH的情况下在JUnit中测试边缘情况?例如:

@Test
public void breakLongWords_EdgeCase() {
    String brokenText = stringProcessor.breakLongWords
            ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); // its length should be = WORD_MAX_LENGTH 

    assertEquals(41,brokenText.length()); // 41 (WORD_MAX_LENGTH + 1) is also hard-coded here
}

解决方法

通常这些字段是“包私有”(没有访问修饰符),单元测试放在同一个包上. 因此,对于来自同一个包的测试和类,常量是可见的,而对于其他包则是隐藏的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读