Guide for begyndere til enhedstest med Xcode

Softwareudvikling er en kompleks proces. Ud over at beherske de forskellige værktøjer og programmeringssprog er der også forståelse af forskellige softwareudviklingsroller. Som de fleste af os ved, involverer gode projekter ikke kun kodning. Store projekter involverer også andre ressourcer til indsamling af krav, prototyping og testning.

Processen med at validere kode kaldes ofte for kvalitetssikring. Udtrykket er dog noget misvisende. I stedet for at sikre kodekvaliteten er det egentlige formål at måle den – ofte i takt med at projektet udvikler sig. Denne subtile forskel, der også er kendt som testdrevet udvikling (f.eks. TDD), kan ses, når man undersøger kvalitetsfunktionens roller. Disse omfatter følgende:

Hvorfor UNIT TESTS?

Som det fremgår, er kvalitetsmåling ofte grupperet i automatiserede og manuelle aktiviteter. Som en person, der er interesseret i algoritmer, arbejder ekstra kode, kendt som enhedstests, for at teste dit primære softwareprojekt. Enhedstests skrives normalt af udviklere og er i fokus i et TDD-miljø. F.eks. er enhedstests afgørende for udviklingen af denne bog. Lad os ved hjælp af iOS XCTest Framework gennemgå, hvordan enhedstest fungerer i Swift.

ARBEJDE MED XCTEST

Hvis du er blevet fortrolig med de Swift-koncepter, der gennemgås i bogen, bør det være nemt at lære at skrive enhedstest. Som diskuteret fungerer enhedstests til at øve kode, der mangler en slutbrugergrænseflade. Lad os for at illustrere det gennemgå testtilfælde, der træner en Stack-datastruktur.

Selv om bogen ikke gennemgår detaljerne i Xcode Integrated Development Environment (IDE), skal det bemærkes, at test kan udføres efter funktion, klasse eller mål. Ved brug af Xcode oprettes enhedstests ved at tilføje et nyt testmål til dit primære kodeprojekt. Når enhedstests er konfigureret, kan de udføres fra IDE’et eller kommandolinjen.

TESTREGLER

Selv om det ikke er påkrævet, betragtes det som bedste praksis, hvis enhedstestfilen nøje svarer til navngivningskonventionen for vores implementeringsfil(er). I vores tilfælde vil vi bruge StackTest.swift. For at få adgang til primære Stack-metoder og -egenskaber fra vores hovedprojekt vil filen også indeholde en testbar importangivelse:

Lige andre enhedstestframeworks fungerer XCTest ved at integrere Swift-sprogfunktioner med specifikke testrelaterede funktioner. De væsentlige metoder er grupperet sammen som assertions. Når der oprettes tests, vil compileren genkende enhedstests med funktioner med test-keywordet som præfiks.

I modsætning til almindelige Swift-funktioner er enhedstests med vilje designet som selvstændige enheder af logik. Som følge heraf accepterer testmetoder ikke argumenter og returnerer ikke værdier. Alternativt kan testdata håndteres gennem hjælpemetoder og initialiserings-/nedrivningssekvenser. Overvej følgende:

TESTPLANNING

Som diskuteret er hovedoperationen i en Stack-datastruktur tilføjelse og fjernelse af elementer. I stedet for at skrive en enkelt funktion til at teste alle operationer, isolerer vores testplan hver vigtig Stack-operation med sin egen test. Som det ses med testPushStack, kontrollerer assertion XCTAssertTrue, at initialiseringen af variablen Stack.count er korrekt initialiseret. Det næste trin omfatter træning af Stack.push ved at iterere gennem arrayet af numberList-elementer. For at verificere, at hver test anvender de samme data, udfyldes numberList ved hjælp af XCTestCase-klassens opsætningsmetode.

Med enhedstesten for tilføjelse af Stack-elementer implementeret kan vi skrive den næste test for fjernelse af elementer:

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.