Swift Academy · Oppitunti

XCTestCase: määritys, purku ja testimetodit

Testiluokkien jäsentäminen setUp-/tearDown-metodeilla ja testimetodien nimeäminen.

Oppitunti 1/413 vaihetta

XCTestCase: määritys, purku ja testimetodit on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.

XCTestCase-perusteet

XCTestCase on kaikkien Swift-yksikkötestien perusluokka. Jokainen "test"-alkuinen metodi on testitapaus.

import XCTest

final class MathTests: XCTestCase {
  func testAddition() {
    XCTAssertEqual(2 + 2, 4)
  }
}

setUp ja tearDown

setUp() suoritetaan ennen jokaista testiä. tearDown() suoritetaan jokaisen testin jälkeen. Käyttäkää niitä jaetun tilan alustamiseen ja siivoamiseen.

final class UserServiceTests: XCTestCase {
  var sut: UserService!
  override func setUp() {
    super.setUp()
    sut = UserService()
  }
  override func tearDown() {
    sut = nil
    super.tearDown()
  }
}

setUpWithError ja tearDownWithError

setUpin ja tearDownin virheitä heittävät versiot: jos valmistelu heittää virheen, testi merkitään automaattisesti epäonnistuneeksi.

override func setUpWithError() throws {
  sut = try UserService(config: loadTestConfig())
}
override func tearDownWithError() throws {
  try sut.cleanup()
}

Luokkatasoinen valmistelu

class setUp() ja class tearDown() suoritetaan kerran ennen luokan kaikkia testejä ja niiden jälkeen — tämä on hyödyllistä paljon resursseja vaativille jaetuille resursseille.

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()
  }
}

Testimetodien nimeäminen

Nimetkää testit muodossa test_methodName_condition_expectedResult, jotta nimet ovat helposti luettavia ja virheilmoitukset selkeitä.

func test_login_withValidCredentials_returnsUser() throws { ... }
func test_login_withInvalidPassword_throwsUnauthorized() throws { ... }

addTeardownBlock

Rekisteröikää testikohtaiset siivouslohkot suoraan ilman tearDown-metodin ohittamista.

func testCreateFile() throws {
  let url = FileManager.default.temporaryDirectory.appendingPathComponent("test.txt")
  addTeardownBlock { try? FileManager.default.removeItem(at: url) }
  // ... test
}

Testien poistaminen käytöstä

Ohittakaa testi lisäämällä testimetodin alkuun _ tai kommentoimalla se pois käytöstä. XCTest tukee myös ohittamista XCTSkipIf-toiminnolla.

func testExperimentalFeature() throws {
  try XCTSkipIf(ProcessInfo.processInfo.environment["CI"] != nil, "Skip on CI")
  // ... test
}

Testimetodit eivät voi heittää virheitä (ennen Xcode 16:ta)

Aiemmissa Xcode-versioissa throws-määritteellä ilmoitetut testimetodit välittävät virheet testin epäonnistumisiksi XCTAssertNoThrow-funktion kautta.

func testDecode() throws {
  let user = try JSONDecoder().decode(User.self, from: validJSON)
  XCTAssertEqual(user.name, "Alice")
}

Testin epäonnistuttaminen nimenomaisesti

Kutsukaa XCTFail("reason")-funktiota pakottaaksenne testin epäonnistumaan kuvailevan viestin kanssa.

func testCallback() {
  var called = false
  service.doWork { called = true }
  if !called { XCTFail("Callback was never invoked") }
}

Testisuunnitelmat

Xcoden Test Plans -toiminnolla voitte suorittaa samat testit eri määrityksillä, kuten eri kielellä, ympäristömuuttujilla tai sanitisereilla.

// File → New → Test Plan
// Add test targets and configure per-configuration env vars
// Useful for running localized UI tests or with Address Sanitizer

Rinnakkainen testaus

Ottakaa rinnakkainen testaus käyttöön Xcoden skeema-asetuksissa, jotta testiluokat suoritetaan samanaikaisesti ja testien kokonaisaika lyhenee.

// Product → Scheme → Test → Options → Execute in parallel
// Each XCTestCase class runs in a separate process
// Ensure tests are independent and don't share global state

Pikatarkistus

Mikä XCTestCase-metodi suoritetaan kerran ennen luokan kaikkia testejä, ei jokaisen yksittäisen testin yhteydessä?

Oppitunnin yhteenveto

Ohittakaa setUp/tearDown-metodit tai niiden virheitä heittävät versiot testiä kohti tehtävää valmistelua ja siivousta varten. Käyttäkää class setUp/tearDown-metodeja kerran luokkaa kohti tarvittaville resursseille. Nimetkää testit kuvailevasti. Käyttäkää addTeardownBlock-toimintoa suoraan määritettävään siivoukseen ja XCTSkipIf-toimintoa ehdolliseen ohittamiseen.

Aloita maksutta

Opi Swift tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
122
Oppitunnit
409

Usein kysytyt kysymykset

Onko oppitunti ”XCTestCase: määritys, purku ja testimetodit” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “XCTestCase: määritys, purku ja testimetodit”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”XCTestCase: määritys, purku ja testimetodit”?

Testiluokkien jäsentäminen setUp-/tearDown-metodeilla ja testimetodien nimeäminen. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”XCTestCase: määritys, purku ja testimetodit”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?

Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. XCTestCase: määritys, purku ja testimetodit
  2. XCTAssert-perhe ja virheitä heittävät tarkistukset
  3. Protokollapohjainen mockaus ja riippuvuuksien injektointi
  4. Asynkroniset testit ja suorituskyvyn mittaaminen
← Takaisin: Swift Academy