2010-12-14 5 views
1

Ich verwende EclEmma in Eclipse (genauer RSA 8). Ich habe die folgende Aussage in meinem Code:Warum wird diese Aussage nicht vollständig von eclemma abgedeckt?

public static boolean isEmpty(Collection collection) { 
    return (collection == null) || collection.isEmpty(); 
} 

und ich habe die folgenden Tests:

@Test public void isEmpty_nullCase() { 
    assertTrue(CollectionUtil.isEmpty(null)); 
} 
@Test public void isEmpty_listCase() { 
    assertTrue(CollectionUtil.isEmpty(new ArrayList())); 
} 

aber aus irgendeinem Grund, die Aussage als gelbe zeigt nach oben. Welchen Teil davon teste ich nicht?

Danke, Peter

+1

Nur aus Gründen der Präzision würde ich empfehlen, Ihre Methode isNullOrEmpty() aufzurufen, damit Anrufer wissen, was sie erwartet. – StriplingWarrior

Antwort

1

Wie wäre es eine Arraylist, die einen Wert hat, und daher nicht leer ist?

+0

Oh ja. Duh! Das war's. :) – Risser

+2

Will der Downvoter sich selbst erklären? – StriplingWarrior

0

Fügen Sie den folgenden Testfall:

@Test 
public void checkNonNullNonEmpty(){ 
    Assert.assertFalse(CollectionUtil.isEmpty(new ArrayList<String>(){ 
    { 
     add("blah blah blah....!"); 
    } 
    }); 
} 

Sie haben nur wahre Bedingungen getestet. Idealerweise gibt es 4 mögliche Kombinationen von return (collection == null) || collection.isEmpty(); Aussage. 1. Bedingung kann T/F und 2. kann T/F sein. Also alle 4 Möglichkeiten. Du hast nur 3 abgedeckt. Der obige Testfall deckt nicht null nicht leere Möglichkeit ab.