2017-04-11 3 views
1

je Code ciselée:branches intérieures couverture JaCoCo

@Override 
public Object put(String key, Object value) { 
    checkNotNull(key); 
    return map.put(key, value); 
} 

public static <T> T checkNotNull(T reference) { 
    if (reference == null) { 
     throw new NullPointerException(); 
    } 
    return reference; 
} 

Méthode put ont pas de branches et checkNotNull préalable ont 2. Si je vais appeler put("key", new Object()); je vais obtenir une couverture complète des branches. Mais sémantiquement put ont 2 branches - une dans la méthode elle-même et 2 imbriquées.

Il est possible de récupérer la 'vraie' branche avec toutes les branches internes?

Répondre

0

Je ne vois aucun problème. Le rapport jacoco montre 50% de couverture de branche (voir "MyClass" ou "checkNotNull()"). Veuillez noter qu'une méthode avec la complexité 1 n'a aucune couverture de branche. Peu importe si la méthode est appelée ("put") ou non ("notCalled").

enter image description here

enter image description here

+0

pour Remerciez réponse. Oui, je suis d'accord que dans ce cas cela fonctionnera, mais si je vais avoir 2 méthodes 'put (String, Object)' et 'put2 (String, Object)' et le test où je vais vérifier seulement 'put (null, new Object()) 'et' put2 ("string", new Object()) 'alors la couverture sera de 100%, mais chaque méthode ne sera couverte que par 1 cas de test – dimonina