Kode yang Mustahil Dicakup
(blog.npcode.com)Bahkan kode Kotlin sederhana seperti ini pun sangat sulit, nyaris mustahil, untuk menguji semua percabangannya. Alasannya, saat Kotlin mengompilasi kode ini menjadi bytecode, ia membuat percabangan yang tidak dimaksudkan oleh penulis kode.
when(answer) {
"yes" -> true
else -> false
}
Di satu sisi, Kotlin menyediakan banyak fitur praktis bagi pengembang yang menulis kode, tetapi saat dikompilasi menjadi bytecode, seperti ini, ia juga menghasilkan banyak percabangan yang tidak terlihat oleh pengguna. jacoco, alat test coverage yang paling luas digunakan di platform JVM, menghitung branch coverage berdasarkan bytecode, sehingga bisa saja menuntut cakupan atas branch yang tidak disadari oleh pengembang yang memakai bahasa Kotlin. Karena itu, jika pengembang Kotlin mencoba mencapai test coverage 100%, dalam kasus seperti di atas mereka kadang perlu melakukan dekompilasi, dan jika lebih sial lagi, dekompilasi bisa gagal sehingga mereka harus melihat bytecode secara langsung untuk memeriksa branch apa saja yang ada.
9 komentar
https://toss.im/slash-21/sessions/1-6
Rasanya seperti membalik prioritas utama dan sekunder kalau kode sampai dipelintir demi mengejar pelacakan coverage 100%.
Kodenya tidak dipelintir. Hanya saja ada cara lain yang lebih nyaman dari sudut pandang manusia.
Di bidang pertahanan (sistem persenjataan), pedoman dari DAPA mewajibkan cakupan kode 100%.
Secara realistis, mencapai 100% itu sulit, tetapi setahu saya sebagai gantinya untuk bagian yang tidak bisa dicakup harus diberi penjelasan satu per satu mengapa bagian tersebut tidak dapat dicakup.
100% pengujian yang gila…
wkwkwk
Untuk kasus percabangan
enum/sealed/boolean, jika tidak ditangani dengan benar, kompiler telah diubah sehingga di Kotlin 1.6 akan muncul peringatan, dan mulai 1.7 akan menjadi error.https://youtrack.jetbrains.com/issue/KT-47709
Saya sudah membaca isinya dengan baik di slash 21 haha
Ah~ jadi itu memang konten yang muncul di slash 21 ya... saya pertama kali melihatnya dari Twitter kenalan saya... maaf telat sadar...