Asserzioni
Verifichi il comportamento
Asserzioni è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.
Che cos'è un'asserzione?
Un'asserzione verifica che un valore effettivo corrisponda a quello previsto. Se fallisce, il test fallisce mostrando un messaggio utile.
JUnit5 fornisce le asserzioni in org.junit.jupiter.api.Assertions.
assertEquals
L'asserzione più comune. Noti l'ordine: prima il valore previsto, poi quello effettivo.
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
val sum = 2 + 3
assertEquals(5, sum)
println("passed")
}assertTrue e assertFalse
Verifichi direttamente le condizioni booleane.
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Assertions.assertFalse
fun main() {
assertTrue(10 > 5)
assertFalse("".isNotEmpty())
println("ok")
}Asserzioni sui valori null
Usi assertNull e assertNotNull per verificare la nullabilità. assertNotNull esegue anche lo smart cast in molti casi.
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Assertions.assertNull
fun main() {
val name: String? = "Ada"
assertNotNull(name)
assertNull(null)
println("done")
}Asserzioni sulle eccezioni
assertThrows verifica che un blocco generi un'eccezione specifica. Restituisce l'eccezione, consentendo di esaminarne il messaggio.
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
val ex = assertThrows(IllegalArgumentException::class.java) {
require(false) { "bad input" }
}
assertEquals("bad input", ex.message)
println("caught")
}Asserzioni raggruppate
assertAll esegue più asserzioni e comunica tutti gli errori insieme, invece di fermarsi al primo.
import org.junit.jupiter.api.Assertions.assertAll
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
assertAll(
{ assertEquals(2, 1 + 1) },
{ assertEquals(4, 2 + 2) }
)
println("all passed")
}Messaggi di errore
Passi un messaggio (o una lambda per un messaggio valutato in modo differito) per rendere gli errori autoesplicativi.
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
val balance = 100
assertEquals(100, balance, "balance should be unchanged")
println("ok")
}Confronto di collezioni
assertEquals funziona per le liste quando ordine e contenuto corrispondono. Usi assertIterableEquals per gli iterable di tipi concreti diversi.
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
val expected = listOf(1, 2, 3)
val actual = (1..3).toList()
assertEquals(expected, actual)
println("lists equal")
}Asserzioni fluenti con AssertK
Librerie come AssertK offrono uno stile leggibile basato su assertThat(x).isEqualTo(y), diffuso nei codebase Kotlin.
// assertThat(result).isEqualTo(5)
// assertThat(list).contains("a", "b")
// assertThat(name).isNotNull()fail()
Chiami fail per forzare un errore, ad esempio per contrassegnare rami irraggiungibili o test non completati.
import org.junit.jupiter.api.Assertions.fail
fun process(x: Int): String = when {
x > 0 -> "positive"
else -> fail("unexpected value")
}Scelta dell'asserzione corretta
Scelga l'asserzione più specifica per ottenere errori chiari:
- Uguaglianza →
assertEquals - Condizioni →
assertTrue/assertFalse - Errori →
assertThrows - Controlli multipli →
assertAll
Verifica rapida
Desidera che un test comunichi contemporaneamente tutti i controlli falliti, invece di interrompersi al primo. Che cosa usa?
Riepilogo
Ora conosce le asserzioni di JUnit5:
assertEquals(prima il valore previsto),assertTrue/assertFalseassertNull/assertNotNull,assertThrowsassertAllper i controlli raggruppati- Aggiungere messaggi per maggiore chiarezza
Prossimo argomento: simulazione delle dipendenze con MockK.
Domande Frequenti
La lezione «Asserzioni» è gratuita?
Sì — il testo completo di «Asserzioni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.
Cosa imparerò in «Asserzioni»?
Verifichi il comportamento Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Kotlin Academy?
Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Asserzioni»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?
Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.