En XCTest se puede ejecutar ciertas operaciones antes y después de una prueba usando setUp() y tearDown() respectivamente.
// Antes
class SetupTests_deprecated: XCTestCase {
var value = 1
override func setup() async throws {
super.setup()
value = 0
}
func test1() {
value += 10
XCTAssert(value == 10) // ✅ La prueba pasa
}
func test2() {
value += 20
XCTAssert(value == 20) // ✅ La prueba pasa
}
}
En Swift Testing basta con implementar el init() de la clase o estructura que define la Suite de pruebas para ejecutar algunas operaciones antes de la prueba.
// Después
struct SetupTests {
var value: Int
init() async {
value = 0
}
@Test
mutating func test1() {
value += 10
#expect(value == 10) // ✅ La prueba pasa
}
@Test
mutating func test2() {
value += 20
#expect(value == 20) // ✅ La prueba pasa
}
}
Si se requiere implementar operaciones después de una prueba (i.e. tearDown), es obligatorio trabajar la suite de pruebas como class final o un actor, en lugar de como struct, para implementar el deinit.
final class TeardownTests {
var value: Int = 0
deinit {
value = -1
}
@Test
func test1() {
value += 10
#expect(value == 10) // ✅ La prueba pasa
}
@Test
func test2() {
value += 20
#expect(value == 20) // ✅ La prueba pasa
}
}
Ejecutar código antes y después de la Suite de pruebas
En XCTest se puede ejecutar ciertas operaciones antes y después de toda la suite de pruebas (XCTestCase) usando las los métodos de clase setUp() y tearDown() respectivamente.
No obstante, a la fecha (2025–11–26) no existe una forma nativa para reproducir este comportamiento en Swift Testing, según esta discusión.
Top comments (0)