-5

我正在对常见的 pangram 程序使用以下两个测试。但是 test2 通过了,而 test3 失败了。

    @Test
    public void test2(){
        Pangram4 pangram4 = new Pangram4(" b cd x rs  ijk pno f vu");
        Set<Character> actual = pangram4.getMissingAlphabets();
        Set <Character>expected = new HashSet<Character>();
        expected.add('a');
        expected.add('e');
        expected.add('g');
        expected.add('h');
        expected.add('l');
        expected.add('m');
        expected.add('q');
        expected.add('t');
        expected.add('w');
        expected.add('y');
        expected.add('z');

        assertEquals(expected,actual);
    }


    @Test
    public void test3(){
        Pangram4 pangram4 = new Pangram4("The quick browndoga lazy.");
        Set<Character> actual = pangram4.getMissingAlphabets();
        Set<Character> expected = new HashSet<Character>();
        expected.add('f');
        expected.add('o');
        expected.add('x');
        expected.add('j');
        expected.add('u');
        expected.add('m');
        expected.add('p');
        expected.add('s');
        expected.add('o');
        expected.add('v');
        expected.add('e');
        expected.add('r');          
        assertEquals(expected, actual);
    }

可能是什么原因?我这里只给出了测试方法,没有给出整个junit类。请使用任何带有 getMissingLetters() 方法的 pangram 程序,该方法返回 Set 并相应地更改测试方法。

4

1 回答 1

2

在您的测试用例test3()中,您“期待”一个o

expected.add('o');

该字母o在测试用例字符串中,"The quick browndoga lazy.". 结果是该expected集合包含o而该actual集合不包含。这会导致错误的结果。

正如@JasonC 提到的,r.

于 2016-09-28T02:27:36.920 回答