Configuración, desmontaje y métodos de prueba de XCTestCase
Estructure clases de prueba con setUp/tearDown y asigne nombres a los métodos de prueba.
Configuración, desmontaje y métodos de prueba de XCTestCase es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.
Conceptos básicos de XCTestCase
XCTestCase es la clase base de todas las pruebas unitarias de Swift. Cada método cuyo nombre comienza por "test" es un caso de prueba.
import XCTest
final class MathTests: XCTestCase {
func testAddition() {
XCTAssertEqual(2 + 2, 4)
}
}setUp y tearDown
setUp() se ejecuta antes de cada prueba. tearDown() se ejecuta después de cada prueba. Úselos para inicializar y limpiar el estado compartido.
final class UserServiceTests: XCTestCase {
var sut: UserService!
override func setUp() {
super.setUp()
sut = UserService()
}
override func tearDown() {
sut = nil
super.tearDown()
}
}setUpWithError y tearDownWithError
Son las variantes que pueden lanzar errores de setUp/tearDown: si la configuración lanza un error, la prueba se marca automáticamente como fallida.
override func setUpWithError() throws {
sut = try UserService(config: loadTestConfig())
}
override func tearDownWithError() throws {
try sut.cleanup()
}Configuración a nivel de clase
class setUp() y class tearDown() se ejecutan una vez antes y después de todas las pruebas de la clase; son útiles para recursos compartidos costosos.
final class DBTests: XCTestCase {
static var db: TestDatabase!
override class func setUp() {
super.setUp()
db = TestDatabase.inMemory()
}
override class func tearDown() {
db.close()
super.tearDown()
}
}Nombres de los métodos de prueba
Nombre las pruebas como test_methodName_condition_expectedResult para mejorar la legibilidad y proporcionar mensajes de error claros.
func test_login_withValidCredentials_returnsUser() throws { ... }
func test_login_withInvalidPassword_throwsUnauthorized() throws { ... }addTeardownBlock
Registre bloques de limpieza para cada prueba directamente en el código, sin redefinir tearDown.
func testCreateFile() throws {
let url = FileManager.default.temporaryDirectory.appendingPathComponent("test.txt")
addTeardownBlock { try? FileManager.default.removeItem(at: url) }
// ... test
}Desactivación de pruebas
Anteceda un método de prueba con _ o conviértalo en comentario para omitirlo. XCTest también permite omitir pruebas con XCTSkipIf.
func testExperimentalFeature() throws {
try XCTSkipIf(ProcessInfo.processInfo.environment["CI"] != nil, "Skip on CI")
// ... test
}Los métodos de prueba no pueden lanzar errores (antes de Xcode 16)
En versiones anteriores de Xcode, los métodos de prueba declarados como throws propagan los errores como fallos de prueba mediante XCTAssertNoThrow.
func testDecode() throws {
let user = try JSONDecoder().decode(User.self, from: validJSON)
XCTAssertEqual(user.name, "Alice")
}Fallo explícito de una prueba
Llame a XCTFail("reason") para forzar el fallo de una prueba con un mensaje descriptivo.
func testCallback() {
var called = false
service.doWork { called = true }
if !called { XCTFail("Callback was never invoked") }
}Planes de pruebas
Los planes de pruebas de Xcode permiten ejecutar las mismas pruebas con distintas configuraciones (idioma, variables de entorno y sanitizadores).
// File → New → Test Plan
// Add test targets and configure per-configuration env vars
// Useful for running localized UI tests or with Address SanitizerPruebas en paralelo
Active las pruebas en paralelo en la configuración del esquema de Xcode para ejecutar las clases de prueba simultáneamente y reducir el tiempo total de las pruebas.
// Product → Scheme → Test → Options → Execute in parallel
// Each XCTestCase class runs in a separate process
// Ensure tests are independent and don't share global stateComprobación rápida
¿Qué método de XCTestCase se ejecuta una vez antes de todas las pruebas de la clase, y no antes de cada prueba individual?
Resumen de la lección
Redefina setUp/tearDown (o sus variantes que pueden lanzar errores) para la configuración y limpieza de cada prueba. Use class setUp/tearDown para los recursos que se crean una vez por clase. Asigne nombres descriptivos a las pruebas. Use addTeardownBlock para la limpieza integrada en el código y XCTSkipIf para omitir pruebas condicionalmente.
Preguntas frecuentes
¿La lección «Configuración, desmontaje y métodos de prueba de XCTestCase» es gratis?
Sí — el texto completo de «Configuración, desmontaje y métodos de prueba de XCTestCase» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Configuración, desmontaje y métodos de prueba de XCTestCase»?
Estructure clases de prueba con setUp/tearDown y asigne nombres a los métodos de prueba. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Configuración, desmontaje y métodos de prueba de XCTestCase»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Configuración, desmontaje y métodos de prueba de XCTestCase
- Familia XCTAssert y aserciones que lanzan errores
- Mocking basado en protocolos e inyección de dependencias
- Pruebas asíncronas y medición del rendimiento