Причина различного поведения подобных тестов джунит
Я использую следующие два теста для общей программы 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
,