2016-06-24 1 views
1

このメソッドを完全にテストする方法を理解できません。 Eclipseは "2つのブランチのうち2つが欠落している"と書いています。このメソッドのすべてのブランチをカバーする方法は?

public boolean hasNext() { 
     return currIndex < currentSize && aList[currIndex] != null; 
    } 

以下は私が書いた単体テストです。

+0

このテストは正確には何をテストする予定ですか?つまり、 "index size and item not null"をカバーします。したがって、item *がnullのブランチを強制しなければなりません。これらのブランチはすべて独自のテストを持つ必要があり、アサーションを使用して有益なメッセージを提供する必要があります。テストするアイテムを分離する必要があります。意味:あなたは 'hasNext'をテストしたいし、特定の条件の下で真か偽を返すことになっています。したがって、それらの条件を作成してメソッドを呼び出し、期待される結果に対して結果をチェックする必要があります。 – Fildor

+0

ヒント:コード内のすべてのブランチを理解できない場合は、それらを明示的にしてください。あなたが 'return A && B'を持っていれば、それを' boolean A = ..;ブールB = ...;返信A&B'など – GhostCat

答えて

2

すべてのブランチをカバーする場合は、メソッドが呼び出されたときに発生するすべての条件をテストする必要があります。

//1. 
currIndex < currentSize && aList[currIndex] != null; 
//2. 
currIndex > currentSize && aList[currIndex] != null; 
//3. 
currIndex < currentSize && aList[currIndex] == null; 
//4. 
currIndex > currentSize && aList[currIndex] == null; 

この結果を@Testメソッド(またはメソッド)に強制する必要があります。

+1

含めるべき良いアドバイスは、個別にそれぞれを実行する明白な名前の別個のテストケースを追加することです。また、サンプルコードには含まれていないので、アサーションの例を追加すると便利です。 – ChiefTwoPencils

関連する問題