Test unitari e test strumentati | Parte 1
Due tipi di unit test
- Test JVM (test dell'unità locale)
- Test sul dispositivo (test della strumentazione)
- → Test dell'interfaccia utente (interazione con le viste)
- → Test non UI (Contenuto, Asset Manager, ecc
Il test unitario è un metodo per testare singole unità di codice in isolamento, è un metodo di test del software in cui le parti testabili più piccole di un'applicazione, chiamate unità, vengono testate individualmente e indipendentemente per il corretto funzionamento. Questo tipo di test viene utilizzato per verificare che le singole unità di codice, come metodi e funzioni, funzionino come previsto. I test unitari sono in genere automatizzati e vengono eseguiti come parte del processo di compilazione. Sono veloci, facili da scrivere e possono essere eseguiti frequentemente, fornendo un rapido feedback sulla qualità del codice.
In Android, il framework per i test unitari è fornito da JUnit, un framework di test ampiamente utilizzato per Java. JUnit è incluso in Android SDK, quindi può essere facilmente aggiunto a qualsiasi progetto Android.
Ecco un esempio di un semplice unit test in Android utilizzando JUnit:
import org.junit.Test
import org.junit.Assert.*
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}
Un altro esempio, puoi testare una funzione che si aspetta un parametro e restituisce un valore:
class Calculator {
fun add(a: Int, b: Int): Int = a + b
}
class CalculatorTest {
private val calculator = Calculator()
@Test
fun add_isCorrect() {
assertEquals(4, calculator.add(2, 2))
}
}
In sintesi, il test unitario è un metodo di test del software in cui le parti testabili più piccole di un'applicazione, chiamate unità, vengono testate individualmente e indipendentemente per il corretto funzionamento. In Android, il framework per i test unitari è fornito da JUnit, un framework di test ampiamente utilizzato per Java. JUnit è incluso in Android SDK, quindi può essere facilmente aggiunto a qualsiasi progetto Android, è una parte essenziale di qualsiasi processo di sviluppo di app Android, aiuta a garantire che il codice funzioni correttamente e rende più facile catturare e correggere i bug all'inizio del processo di sviluppo.
Vantaggi del test unitario:
- Il test unitario aumenta la fiducia nel modificare/mantenere il codice. Se vengono scritti buoni unit test e se vengono eseguiti ogni volta che viene modificato qualsiasi codice, saremo in grado di rilevare tempestivamente eventuali difetti introdotti a causa della modifica. Inoltre, se i codici sono già resi meno interdipendenti per rendere possibile il test unitario, l'impatto involontario delle modifiche a qualsiasi codice è minore.
- I codici sono più riutilizzabili. Per rendere possibile il test unitario, i codici devono essere modulari. Ciò significa che i codici sono più facili da riutilizzare.
- Lo sviluppo è più veloce riducendo i difetti che possono essere riscontrati durante il test del sistema o il test di accettazione.
- Il debug è facile. Quando un test fallisce, è necessario eseguire il debug solo delle modifiche più recenti. Con i test a livelli più elevati, è necessario scansionare le modifiche apportate nell'arco di diversi giorni/settimane/mesi.
- I codici sono più affidabili.
@Test
fun pallindrome{
//Arrange
//Act
//Assert
}
Come puoi vedere val sample = sample() è Arrange
e val result = sample.isPallindrome(“hello”) is Act
e assertEquals(false,result) questo è Assert
qui false è il valore atteso e result è il valore che stiamo ottenendo attraverso la funzione dopodiché corrisponderà a questi valori in base al risultato che il test case passerà o fallirà
tutte queste tre cose fanno la logica del test
Proverò su una stringa in cui verificherò che una stringa sia palindromo o meno
package com.example.unittesting.utils
import org.junit.Assert.*
import org.junit.Test
class sampleTest {
@Test
fun isPallindrome() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("hello")
//Assert
assertEquals(false,result)
}
@Test
fun isPallindrome_level_expectedTrue() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("level")
//Assert
assertEquals(true,result)
}
@Test
fun isPallindrome_civic_expectedTrue() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("civic")
//Assert
assertEquals(true,result)
}
}
Come puoi vedere, tutti i casi di test sono stati superati secondo il valore previsto
Nel prossimo articolo vedremo i test strumentati per ulteriori informazioni sui test unitari passare attraverso questi documenti
Su di me
CIAO,
Sono Abhay Saini, lavoro come sviluppatore Android presso AppyHigh. Sono uno studente dell'ultimo anno presso l' Indian Institute of Information Technology, Una . Un entusiasta più fresco con capacità di apprendimento altamente motivato, veloce e di leadership che persegue B.Tech in Information Technology.
Se hai qualche problema con Android, inviami un ping su [email protected] o Linkedin
Buona giornata!!

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































