2016-09-28 27 views
-5

我對普通pangram程序使用以下兩個測試。但test3在test3失敗時通過。類似junit測試的不同行爲的原因

@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程序,以返回相應的設置和更改測試方法。

+0

此外,test3s預期集合中的大量字母實際上是在句子中......就像o和r。 –

回答

2

在你的測試用例test3(),你是 「期待」 的o

expected.add('o'); 

o是在測試用例字符串,"The quick browndoga lazy."。結果是expected集包含一個oactual集不包含。這會導致錯誤的結果。

由於@JasonC提到,r也存在相同的問題。

+2

甚至加了兩次 - 可以肯定嗎? –

+0

R也在那裏。 –

+0

而你,大聲笑......我認爲就是這樣。至少在最後半小時,這是我玩得最開心的時刻。 –