Причина различного поведения подобных тестов джунит

Я использую следующие два теста для общей программы 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(), который возвращает метод Set и соответственно изменяет метод теста.

1 ответ

Решение

В вашем тестовом случае test3()вы "ожидаете" o:

expected.add('o');

Письмо o находится в строке теста, "The quick browndoga lazy.", Результатом является то, что expected набор содержит o в то время как actual установить не. Это приводит к ложному результату.

Как уже упоминалось @JasonC, с r,

Другие вопросы по тегам