2016-09-28 15 views
-5

共通のpangramプログラムでは、次の2つのテストを使用しています。しかし、test2は合格し、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); 
    } 

どのような理由が考えられますか?私はジュニットクラス全体ではなく、ここでテストメソッドを与えただけです。それに応じてSetとChangeテストメソッドを返すgetMissingLetters()メソッドを持つpangramプログラムを使用してください。

+0

また、test3sの期待されるセットの文字は、実際には文の中にたくさんあります。o、rと似ています。 –

答えて

2

テストケースtest3()では、oを "期待" している:

expected.add('o'); 

手紙oは、テストケース、文字列、"The quick browndoga lazy."です。その結果、expectedセットにはoが含まれ、actualセットには含まれません。この結果、誤った結果になります。

@JasonCが述べたように、rでも同じ問題があります。

+2

も2回追加されました - 確かに? –

+0

Rもそこにあります。 –

+0

そしてU、笑...私はそれだと思う。これは、少なくとも過去30分間に私が持っていた最も楽しいものです。 –

関連する問題