SWT - Unit Tests Flashcards
Hvad er et unit test framework?
Et værktøj til at skrive Unit Tests. I kurset arbejder vi med NUnit-frameworket
Hvad er The Green Zone?
En sikker zone for udviklere, hvor vores unit tests er adskilt fra mere komplicerede tests (f.eks. integrationstests). Her kan vi få nyeste kode og køre alle tests knyttet hertil, og hvis alle test her er grønne, er vi i The Green Zone.
Hvad står AAA for og hvad er det?
Arrange, Act og Assert. Det er et mønster til at organisere vores tests på.
Hvad betyder de enkelte dele i AAA?
Arrange: Opsætning af sit object (uut) og opsætning af sin test case i den ønskede tilstand
Act: Får vores uut til at gøre en aktivitet, ofte noget med at kalde en metode for at teste om den gør det rigtige
Assert: Tjekker at det vi forventede også skete (den automatiske/objektive del af testen)
Hvad er formålet med The Green Zone?
At vi kan køre Green Zone Test’ene hurtigt hele tiden, så vi har en god mavefornemmelse, når vi bevæger os frem i vores kodeudvikling
Hvad er false positive?
- DOBBELTTJEK DETTE!
Når en test fejler, men der ikke er noget galt med koden, man tester. Så er testen forkert pga. man f.eks. har konfigureret den forkert eller sat den forkert sammen.
I Unit Tests, hvad er en god navnekonvention?
Metoden man tester, scenariet og forventet resultat. F.eks.:
Schedule_OneThreadScheduleCalledTwice_SameThreadSelected( )
Hvordan anvendes AAA i NUnit framework?
- NUnit supporter klassen [TextFixture]
- Heri er der en attribut [Setup], der er en metode til at hjælpe med at arrange tingene
- Hver enkelt testcase får [Test] attributten, der er standalone metoder
- Mere arrange steps (hvis nødvendigt)
- Act‘er (hvis nødvendigt)
- Assert‘er (hvis vi ikke assert’er, har vi ikke testet)
- NUnit har fleksible muligheder for at Assert‘e
Hvordan opbygges den klassiske assert model?
Assert.AreEqual(10,x);
10 = forventede tilstand
x = faktiske tilstand
Hvordan opbygges den constraint-baserede assert model?
Assert.That(x, Is.EqualTo(10));
eller
Assert.That(< item >,< verb >.< constraint >)
x = faktiske tilstand
EqualTo(10) = constraint med forventede tilstand
Forklar assert-verbumerne i constraint-based-modellen
Assert.That(< item >,< verb >.< constraint >)
-
< item > kan være:
- værdi, f.eks. returværdi fra metodekald eller en property
- reference til et objekt
- metode eller lambda, begge med nul parametre
-
< verb > kan være:
- Is.
- Has.
- Contains. (hvis item er en string eller collection)
- Does.
- Throws. (hvis item er en metode eller en lambda)
- Osv. …
-
< constraint > kan være (næsten, men ikke aller constraints følger helt dette mønster):
- .EqualTo(< value >)
- .Greater Than(< value >) / .LessThan(< value >)
- .InRange(< value >, < value >)
- .Zero
- .False / True
- .Null
- .Empty (strings og collections)
- .Contain (strings og collections)
- .EndWith(“ “) / .StartWith(” “) (strings)
- .Throws (methoder/lambda)
- Osv. …
Hvilken project type bruger vi i kurset til at oprettet Unit Tests i?
NUnit Test Project, der kan køre på .NET Core (gerne mindst version .NET Core 3.1 i “target framework”)
Hvilken dependency skal din testklasse have?
Dependency til den klasse, som vi tester, så vi kan lave et objekt af klassen (uut = unit under test)
Hvad kan et Console.App projekt?
Tage input fra tastaturet og output på en skærm
Hvad kan et Class Library projekt?
Indeholder kode som man kan bruge indefra andre klasser eller andre projekter