类似 junit 测试的不同行为的原因
Reason for different behavior of the similar junit tests
我正在对常见的 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);
}
可能是什么原因?我这里只给出了测试方法,并没有给出整个junitclass。请使用任何带有 getMissingLetters() 方法的 pangram 程序,returns 相应地设置和更改测试方法。
在您的测试用例 test3()
中,您是 "expecting" 一个 o
:
expected.add('o');
字母o
在测试用例字符串"The quick browndoga lazy."
中。结果是 expected
集包含 o
而 actual
集不包含。这会导致错误的结果。
正如@JasonC 提到的,r
也存在同样的问题。
我正在对常见的 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);
}
可能是什么原因?我这里只给出了测试方法,并没有给出整个junitclass。请使用任何带有 getMissingLetters() 方法的 pangram 程序,returns 相应地设置和更改测试方法。
在您的测试用例 test3()
中,您是 "expecting" 一个 o
:
expected.add('o');
字母o
在测试用例字符串"The quick browndoga lazy."
中。结果是 expected
集包含 o
而 actual
集不包含。这会导致错误的结果。
正如@JasonC 提到的,r
也存在同样的问题。