Kapsanması İmkansız Kod
(blog.npcode.com)Böyle basit bir Kotlin kodunda bile tüm dalları test etmek, neredeyse imkansız olacak kadar zordur. Bunun nedeni, Kotlin’in bu kodu bytecode’a derlerken kodu yazanın amaçlamadığı dallar üretmesidir.
when(answer) {
"yes" -> true
else -> false
}
Kotlin, kod yazan geliştiricilere pek çok kullanışlı özellik sunarken, bytecode’a derlendiğinde bu örnekte olduğu gibi kullanıcıya görünmeyen çok sayıda branch de üretir. JVM platformunda en yaygın kullanılan test coverage aracı olan JaCoCo, branch coverage’ı hesaplarken bytecode’u temel aldığı için, Kotlin kullanan geliştiricilerden fark etmeden oluşan branch’leri de kapsamasını isteyebilir. Bu nedenle Kotlin geliştiricileri test coverage’ı %100’e çıkarmaya çalıştığında, yukarıdaki gibi durumlarda decompile yapmak zorunda kalabilir; daha da şanssızlarsa decompile başarısız olur ve hangi branch’lerin bulunduğunu anlamak için doğrudan bytecode’a bakmaları gerekebilir.
9 yorum
https://toss.im/slash-21/sessions/1-6
Coverage takibini %100’e çıkarmak için kodu eğip bükmek, bana göre amacı araçla karıştırmak gibi hissettiriyor.
Kod bozulmuş değil. Sadece insan açısından daha rahat başka yollar var.
Savunma (silah sistemleri) alanında, DAPA’nın yönergeleri kod kapsamının %100 olmasını şart koşuyor.
Gerçekte %100’e ulaşmak zor olsa da, bunun yerine kapsanamayan her yer için neden kapsanamadığına dair tek tek açıklama eklenmesi gerektiğini biliyorum.
Deliliğin testlerde %100’ü…
hahaha
enum / sealed / boolean için dallanma durumlarında doğru şekilde ele alınmazsa, derleyici Kotlin 1.6'da uyarı verecek, 1.7'den itibaren ise hata verecek şekilde değiştirildi.
https://youtrack.jetbrains.com/issue/KT-47709
slash 21'de içeriği keyifle okudum haha
Ah~ demek ki slash 21'de çıkan içerikmiş... Ben ilk kez bir tanıdığımın Twitter'ında görmüştüm... Geç kaldığım için kusura bakmayın...