Les proves unitàries són una part essencial del desenvolupament de programari, ja que permeten verificar que les diferents parts del codi funcionen correctament de manera independent. En aquest tema, aprendrem com crear i executar proves unitàries a Xcode utilitzant el framework XCTest.
Objectius del Tema
- Entendre què són les proves unitàries i per què són importants.
- Aprendre a configurar un projecte Xcode per a proves unitàries.
- Escriure i executar proves unitàries bàsiques.
- Utilitzar assertions per validar el comportament del codi.
- Conèixer les millors pràctiques per escriure proves unitàries efectives.
Què són les Proves Unitàries?
Les proves unitàries són tests automàtics que verifiquen el funcionament d'una unitat de codi, com ara una funció o un mètode. Aquestes proves ajuden a assegurar que el codi compleix amb les especificacions i que els canvis futurs no introdueixen errors.
Beneficis de les Proves Unitàries
- Detecció Primerenca d'Errors: Identifiquen errors en fases inicials del desenvolupament.
- Facilitat de Refactorització: Permeten canviar el codi amb confiança, sabent que les proves validaran el comportament.
- Documentació del Codi: Les proves poden servir com a documentació viva del comportament esperat del codi.
Configurant un Projecte Xcode per a Proves Unitàries
Quan crees un nou projecte a Xcode, pots incloure un target de proves unitàries. Si no ho vas fer inicialment, pots afegir-lo més tard.
Passos per Afegir un Target de Proves Unitàries
-
Crear un Nou Projecte amb Proves Unitàries:
- A l'assistent de creació de projectes, assegura't de seleccionar l'opció "Include Unit Tests".
-
Afegir un Target de Proves Unitàries a un Projecte Existents:
- Ves a
File > New > Target
. - Selecciona
iOS Unit Testing Bundle
omacOS Unit Testing Bundle
segons el teu projecte. - Fes clic a
Next
i segueix les instruccions per afegir el target.
- Ves a
Escriure i Executar Proves Unitàries
Exemple de Prova Unitària
Suposem que tenim una funció que suma dos números:
Podem escriure una prova unitària per verificar que aquesta funció funciona correctament.
Creant una Prova Unitària
-
Crear una Nova Classe de Proves:
- A la carpeta de proves del teu projecte, crea un nou fitxer Swift i anomena'l
MathTests.swift
.
- A la carpeta de proves del teu projecte, crea un nou fitxer Swift i anomena'l
-
Importar XCTest i Definir la Classe de Proves:
import XCTest @testable import ElTeuProjecte class MathTests: XCTestCase { func testAdd() { let result = add(2, 3) XCTAssertEqual(result, 5, "La funció add hauria de retornar 5 per a 2 + 3") } }
-
Executar les Proves:
- Selecciona
Product > Test
o utilitza la drecera de teclatCmd + U
.
- Selecciona
Assertions
Les assertions són expressions que verifiquen que una condició és certa. Si la condició és falsa, la prova falla.
Assertions Comunes
XCTAssertEqual
: Verifica que dos valors són iguals.XCTAssertTrue
: Verifica que una condició és certa.XCTAssertFalse
: Verifica que una condició és falsa.XCTAssertNil
: Verifica que un valor és nil.XCTAssertNotNil
: Verifica que un valor no és nil.
Exemple d'Assertions
func testAssertions() { let value = 10 XCTAssertEqual(value, 10, "El valor hauria de ser 10") XCTAssertTrue(value > 5, "El valor hauria de ser major que 5") XCTAssertFalse(value < 5, "El valor no hauria de ser menor que 5") XCTAssertNotNil(value, "El valor no hauria de ser nil") }
Millors Pràctiques per Escriure Proves Unitàries
- Només Provar una Unitat de Codi: Cada prova hauria de verificar una única funcionalitat.
- Utilitzar Noms Descriptius: Els noms de les proves haurien de descriure clarament què estan provant.
- Evitar la Dependència entre Proves: Les proves haurien de ser independents entre elles.
- Mantenir les Proves Simples i Curtes: Les proves haurien de ser fàcils de llegir i entendre.
Exercici Pràctic
Exercici
Escriu una funció que calculi el factorial d'un nombre i crea una prova unitària per verificar el seu funcionament.
Prova Unitària
class MathTests: XCTestCase { func testFactorial() { XCTAssertEqual(factorial(0), 1, "El factorial de 0 hauria de ser 1") XCTAssertEqual(factorial(1), 1, "El factorial de 1 hauria de ser 1") XCTAssertEqual(factorial(5), 120, "El factorial de 5 hauria de ser 120") } }
Conclusió
Les proves unitàries són una eina poderosa per assegurar la qualitat del codi. En aquest tema, hem après a configurar un projecte Xcode per a proves unitàries, escriure i executar proves bàsiques, i utilitzar assertions per validar el comportament del codi. També hem vist algunes millors pràctiques per escriure proves unitàries efectives. Amb aquestes habilitats, estaràs millor preparat per desenvolupar aplicacions robustes i fiables.
Dominar Xcode: De Principiant a Avançat
Mòdul 1: Introducció a Xcode
- Començant amb Xcode
- Entenent la Interfície de Xcode
- Creant el teu Primer Projecte Xcode
- Navegació Bàsica de Xcode
Mòdul 2: Conceptes Bàsics de Swift a Xcode
- Introducció a la Programació en Swift
- Variables i Constants
- Tipus de Dades i Operadors
- Flux de Control
- Funcions i Closures
Mòdul 3: Construint Interfícies d'Usuari
- Introducció a Interface Builder
- Dissenyant amb Storyboards
- Auto Layout i Constriccions
- Utilitzant les Previsualitzacions de Xcode
- Creant Components UI Personalitzats
Mòdul 4: Treballant amb Dades
Mòdul 5: Depuració i Proves
- Conceptes Bàsics de Depuració
- Utilitzant Breakpoints
- Proves Unitàries
- Proves d'Interfície d'Usuari
- Proves de Rendiment
Mòdul 6: Funcions Avançades de Xcode
- Utilitzant Instruments per a l'Optimització del Rendiment
- Tècniques Avançades de Depuració
- Configuracions de Compilació Personalitzades
- Scripting amb Xcode
- Integració amb Sistemes d'Integració Contínua
Mòdul 7: Desplegament d'Aplicacions
- Preparant per a la Submissió a l'App Store
- Creant Captures de Pantalla per a l'App Store
- Gestionant les Metadades de l'App Store
- Enviant la teva Aplicació
- Millors Pràctiques Post-Submissió