Çalıştığım bir kitaplık için% 100 kod kapsamı almak için çalışıyorum ve bir anahtara ve yalnızca anlamadığım bir kapsamla ilgili bazı sorunlar yaşıyorum.Anahtar deyimi için Jacoco kapsamı
Şu anda Jacoco 0.7.2 kullanıyorum, çünkü her yeni sürüm Robolectrics ile kopuyor gibi görünüyor.
ben basit switch deyimi sınamak:
public enum Type {
NONE, LEGACY, AKS
}
private static Class<?> getCipherClass(Type type) {
switch (type) {
case LEGACY:
return CipherWrapperLegacy.class;
case AKS:
return CipherWrapperAks.class;
default:
return null;
}
}
Yazdığım testi aşağıdaki kontrolleri içerir (ı yöntem özel olarak yansıması kullanmak zorunda):
final CipherWrapper instance = CipherWrapper.createInstance(mockContext, CipherWrapper.Type.LEGACY, ALIAS);
assertNotNull(instance);
Method getCipherMethod = TestUtils.makeMethodAccessible(CipherWrapper.class, "getCipherClass", CipherWrapper.Type.class);
assertNull(getCipherMethod.invoke(instance, CipherWrapper.Type.NONE));
assertEquals(CipherWrapperAks.class, getCipherMethod.invoke(instance, CipherWrapper.Type.AKS));
assertEquals(CipherWrapperLegacy.class, getCipherMethod.invoke(instance, CipherWrapper.Type.LEGACY));
sonucu değil beklediğim ne:
Sarı çizginin eksik bir şey olduğunu öne sürdüğü için görüntü biraz kafa karıştırıcı. Yeşil simge bana 3 daldan 3'ünün kaplandığını söylüyor.
Ayrıca anahtar kutusunu case NONE
ile uzatmak için bir test yaptım ve bir şey değiştirmedi.
Yapabileceğim tek şey, eğer/else ile anahtarı değiştirmek ve sonra% 100 kapsama almak.
Şu anda% 98 kapsama sahip ama hiçbir şey genel dayalı cevapsız edilir:
Tek bir şey için 'null' ilettiğinizde durumu sınamayacaksınız ... –
Bir tür için sonuçlanması gereken 'type' için boş bir değerde geçen bir sınama vakası yok. NullPointerException'. (Dürüst olmak gerekirse, girişe girmeden önce germek için duruyorum ve jonskeet aynı noktaya atlıyor ...) –
Hm ... doğru, ama neden bir yerde bir dal olarak bahsedilmiyor? Genel bakış, herhangi bir karmaşıklığı özlemediğimi gösteriyor, normalde bu durumda null bir yolu özlüyorsam ... her halükarda bunu test edip sonuçlarıyla geri dönün – WarrenFaith