0Pricing
Kotlin Academy · Lezione

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/assertFalse
  • assertNull/assertNotNull, assertThrows
  • assertAll per 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.

Tutte le lezioni di questo corso

  1. Scrittura di test con JUnit5
  2. Asserzioni
  3. Mocking con MockK
  4. Test delle coroutine
← Torna a Kotlin Academy