Hjem Personlig finansiering Ved hjælp af JUnit-dummies

Ved hjælp af JUnit-dummies

Indholdsfortegnelse:

Video: Dragsbæk frigiver medarbejderressourcer ved hjælp af AGV-løsning 2025

Video: Dragsbæk frigiver medarbejderressourcer ved hjælp af AGV-løsning 2025
Anonim

JUnit er en standardiseret ramme til testning af Java-enheder (det vil sige Java-klasser). JUnit kan automatiseres til at tage noget af arbejdet ud af testen.

Forestil dig, at du har oprettet en enumtype med tre værdier: GREEN, YELLOW og RED. Listing 1 indeholder koden:

Listing 1

Public Enum SignalColor {GREEN, YELLOW, RED}

Et trafiklys har en tilstand (som er et fancy navn til trafiklysets farve).

offentlig klasse TrafficLight {SignalColor state = SignalColor. RØD;

Hvis du kender trafiklysets aktuelle tilstand, kan du bestemme, hvad trafiklysets næste tilstand vil være.

public void nextState () {switch (tilstand) {case RED: state = SignalColor. GRØN; pause; tilfælde GUL: tilstand = SignalColor. RØD; pause; tilfælde GREEN: state = SignalColor. GUL; pause; default: state = SignalColor. RØD; pause;}}

Du kan også ændre trafiklysets tilstand et vist antal gange:

offentlig ugyldig ændring (int numberOfTimes) {for (int i = 0; i 

Når du har alt sammen, har du TrafficLight-klassen i liste 2.

Liste 2

offentlig klasse TrafficLight {SignalColor state = SignalColor. RØD; public void nextState () {switch (state) {tilfælde RED: state = SignalColor. GRØN; pause; tilfælde GUL: tilstand = SignalColor. RØD; pause; tilfælde GREEN: state = SignalColor. GUL; pause; default: state = SignalColor. RØD; pause;}} offentlig ugyldig ændring (int numberOfTimes) {for (int i = 0; i 

I de gamle dage har du muligvis fortsat skriveskode, skaber flere klasser, kalder NextState og ændrer metoder i Listing 2. Derefter vil du efter flere måneders kodning stoppe for at teste dit arbejde.

Og hvad en overraskelse! Dine test ville mislykkes miserably! Du bør aldrig forsinke testning i mere end en dag eller to. Test tidligt og test ofte!

En filosofi om testning siger, at du skal teste hvert stykke kode, så snart du har skrevet det. Selvfølgelig lyder ikke udtrykket "bit af kode" meget videnskabeligt. Det ville ikke gøre at udviklere går rundt og taler om "chunk-of-code testing", som de gjorde i eftermiddag. Det er bedre at kalde hvert stykke kode en enhed , og få udviklere til at tale om enhedsprøvning .

Den mest almindelige enhed til test er en klasse. Så en typisk Java-udvikler tester hver klasse, så snart klassens kode er skrevet.

Så hvordan går du om at teste en klasse? En nybegynder kan teste TrafficLight-klassen ved at skrive en ekstra klasse - en klasse, der indeholder en hovedmetode. Den vigtigste metode skaber en forekomst af TrafficLight, kalder NextState og ændrer metoder, og viser resultaterne.Nybegynderen undersøger resultaterne og sammenligner dem med nogle forventede værdier.

Efter at have skrevet hovedmetoder for snesevis, hundredvis eller endog tusindvis af klasser, bliver nybegynderen (nu en fuldt udviklet udvikler) træt af testrutinen og søger måder at automatisere testproceduren på. Træt eller ej, kan en udvikler forsøge at dechifrere en anden udviklers håndkodede tests. Uden at have nogen standarder eller retningslinjer for konstruktion af test, kan læsning og forståelse af en anden udviklers test være svært og kedelig.

Så JUnit kommer til undsætning!.

For at finde ud af, hvordan Eclipse automatiserer brugen af ​​JUnit, skal du gøre følgende:

  1. Opret et Eclipse-projekt med Listings 1 og 2.

  2. Højreklik på Windows Explorer i TrafficLight. java filial. På en Mac skal du styre-klikke på pakken Stifinderens TrafficLight. java filial.

    En kontekstmenu vises.

  3. I kontekstmenuen skal du vælge Ny → JUnit Test Case.

    Som følge heraf vises dialogboksen Ny JUnit Test Case.

  4. Klik på Næste nederst i dialogboksen Ny JUnit Test Case.

    Som et resultat ser du den anden side af dialogboksen Ny JUnit Test Case. Den anden side angiver metoder, der tilhører (enten direkte eller indirekte) til TrafficLight-klassen.

  5. Anbring et afkrydsningsfelt i afkrydsningsfeltet mærket trafiklys.

    Som følge heraf placerer Eclipse afkrydsningsfelter i afkrydsningsfelterne nextState () og ændre (int) .

  6. Klik på Udfør nederst i dialogboksen Ny JUnit Test Case.

    JUnit er ikke formelt en del af Java. I stedet kommer med sit eget sæt af klasser og metoder til at hjælpe dig med at oprette test til din kode. Når du har klikket på Finish, spørger Eclipse dig om du vil inkludere JUnit-klasserne og -metoderne som en del af dit projekt.

  7. Vælg Udfør følgende handling og tilføj JUnit 4-bibliotek til byggepaden. Klik derefter på OK.

    Eclipse lukker dialogboksene, og dit projekt har en helt ny TrafficLightTest. java fil. Filens kode er vist i Liste 3.

    Koden i liste 3 indeholder to tests, og begge tests indeholder opkald til en ubehagelig lyderfejlmetode. Eclipse vil gerne have dig til at føje kode for at gøre disse test forbi.

  8. Fjern opkaldene til fejlmetoden. I stedet for fejlsøgningsmetoden skal du indtaste koden med fed skrift i Liste 4.

  9. Højreklik på (i Windows), eller klik på (på en Mac) TrafficLightTest. java filial. Vælg Kør som → JUnit test i den resulterende kontekstmenu.

    Eclipse kan have mere end en slags JUnit testramme op på ærmet. Hvis det er tilfældet, kan du muligvis se en dialogboks som den nedenfor. Hvis du gør det, skal du vælge Eclipse JUnit Launcher, og derefter klikke på OK.

    Som følge heraf kører Eclipse din TrafficLightTest. java program. Eclipse viser resultatet af kørslen foran sin egen Package Explorer. Resultatet viser ingen fejl og ingen fejl. Puha!

Listing 3

Import statisk org. JUnit. Hævde. *; import org. JUnit. Prøve; offentlig klasse TrafficLightTest {@Test public void testNextState () {fail {"Ikke implementeret endnu");} @Test public void testChange () {fail ("Ikke implementeret endnu");}}

Listing 4

import statisk org.JUnit. Hævde. *; import org. JUnit. Prøve; offentlig klasse TrafficLightTest {@Test public void testNextState () { TrafficLight light = nyt TrafficLight (); assertEquals (SignalColor. RØD, lys tilstand); lys. nextState (); assertEquals (SignalColor. GREEN, light. State); lys. nextState (); assertEquals (SignalColor. GUL, lys tilstand); lys. nextState (); assertEquals (SignalColor. RØD, lys tilstand); } @Test public void test Ændre () { TrafficLight light = new TrafficLight (); lys. ændring (5); assertEquals (SignalColor. GUL, lys tilstand); }}

Når du vælger Kør som → JUnit Test, ser Eclipse ikke efter en hovedmetode. I stedet søger Eclipse efter metoder, der starter med @Test og andre sådanne ting. Eclipse udfører hver af @Test-metoderne.

Ting som @Test er Java annoteringer .

Liste 4 indeholder to @Test-metoder: testNæsteStat og testændring. Metoden TestNextState sætter TrafficLight NextState-metoden til test. På samme måde bøjer testChange-metoden TrafficLight-ændringens muskler.

Overvej koden i testNextState-metoden. TestNextState-metoden gentager gentagne gange TrafficLight-klassens NextState-metode og JUnits assertEquals-metode. AssertEquals-metoden tager to parametre: en forventet værdi og en faktisk værdi.

  • I det øverste assertEquals call er den forventede værdi SignalColor. RØD. Du forventer, at trafiklyset er RØD, fordi du i Listing 2 initialiserer lysets tilstand med værdien SignalColor. RØD.

  • I det øverste assertEquals call er den faktiske værdi lys. tilstand (den farve, der faktisk er gemt i trafiklysets tilstandsvariabel).

Hvis den faktiske værdi er lig med den forventede værdi, fortsætter opkaldet til hævdet Equal passes og JUnit fortsætter med at udføre udsagnene i testNextState-metoden.

Men hvis den faktiske værdi er forskellig fra den forventede værdi, fejler assertEquals og resultatet af kørslen viser fejlen. For eksempel overvej hvad der sker, når du ændrer den forventede værdi i det første assertEquals call i Listing 4:

@Test public void testNextState () {TrafficLight light = new TrafficLight (); assertEquals (SignalColor. GUL, lys tilstand);

Umiddelbart efter sin konstruktion er et trafiklys farve RØD, ikke GUL. Så testNextState-metoden indeholder en falsk påstand og resultatet af at gøre Run As → JUnit ligner et barns dårlige rapportkort.

At have testNæsteStat før testændring i liste 4 garanterer ikke at JUnit vil udføre testNextState før udfør testChange. Hvis du har tre @Test-metoder, kan JUnit udføre dem fra øverste til nederste, fra bunden til øverste, fra den midterste metode til den øverste til den nederste eller i nogen grad overhovedet. JUnit kan endda stoppe midt i en test for at udføre dele af en anden test. Derfor bør du aldrig tage antagelser om resultatet af en test, når du skriver en anden test.

Du vil måske have visse udsagn, der skal udføres, før nogen af ​​testene begynder.Hvis du gør det, skal du sætte disse udsagn i en metode, der hedder setUp, og forord denne metode med en @For annotation. (Se afkrydsningsfeltet setUp () i figuren i trin 3 i liste 2 ovenfor.)

Her er nyheder: Ikke alle hævderEværdige metoder er skabt ens! Forestil dig at tilføje en førerklasse til dit projekt kode. "Driver klasse" betyder ikke en printerdriver eller en bunken driver. Det betyder en person, der kører bil - en bil, der nærmer dig dit trafiklys. For detaljer, se Listing 5.

Listing 5

Public Class Driver {offentlig dobbelt hastighed (TrafficLight-lys) {switch (lys tilstand) {case RED: return 0. 0; tilfælde GUL: retur 10. 0; tilfælde GREEN: retur 30 0; standard: return 0. 0;}}}

Når lyset er rødt, er førers hastighed 0. 0. Når lyset er gult, sænker bilen til et sikkert 10. 0. Når lyset er grønt, Bilen krydser med en hastighed på 30 0.

(I dette eksempel er hastighedsenhederne ligegyldige. De kan være miles per time, kilometer pr. time eller hvad som helst. Den eneste måde det betyder er, om Bilen er i Boston eller New York City. I så fald bør hastigheden for GULLE være meget højere end hastigheden for GREEN, og hastigheden for RED skal ikke være 0. 0.)

For at skabe JUnit-test for Førerklasse, følg trin 1 til 9, der er nævnt tidligere i denne artikel, men sørg for at foretage følgende ændringer:

  • Højreklik eller højreklik på driveren i trin 2. java filial i stedet for TrafficLight. java filial.

  • I trin 5 skal du sætte et afkrydsningsfelt i driverafdelingen.

  • I trin 8 skal du fjerne opkaldene til fejlmetode for at oprette DriverTest-klassen, der er vist i Listing 6. (Koden, du indtaster, vises med fed skrift.)

Listing 6

Import statisk org. JUnit. Hævde. *; import org. JUnit. Prøve; offentlig klasse DriverTest {@Test public void testVelocity () { TrafficLight light = nyt TrafficLight (); lys. ændring (7); Driverdriver = Ny driver (); assertEquals (30,0, driver. Hastighed (lys), 0,1); }}

Hvis alt går godt, passer JUnit-testen med flyvende farver. (For at være mere præcis, passerer JUnit med farven grøn!) Så kørslen af ​​DriverTest er ikke ny eller spændende. Hvad er spændende, er kaldet til at hævde, at Equals i Listing 6.

Når du sammenligner to dobbeltværdier i et Java-program, har du ikke ret til at forvente næsenes ligestilling. Det vil sige, at en af ​​de dobbelte værdier kan være 30,000000000, mens den anden dobbelte værdi er tættere på 30 000000001. En computer har kun 64 bit til at gemme hver dobbeltværdi, og unøjagtigheder kryber ind her og der. Så i JUnit har assertEquals metode til sammenligning af dobbeltværdier en tredje parameter. Den tredje parameter repræsenterer wiggle room.

I liste 6 er sætningen

assertEquals (30, 0, driver. Hastighed (lys), 0. 1);

siger følgende: "Angiv, at driverens faktiske værdi. hastighed (lys) er inden for 0. 1 af den forventede værdi 30. 0. Hvis det er tilfældet, overgår overfaldet. Hvis ikke, fejler påstanden. "

Når du kalder assertEquals for dobbeltværdier, kan det være vanskeligt at vælge en god fejlmargin.Disse tal illustrerer de slags ting, der kan gå galt.

Her er din fejlmargin for lille.

Der er din fejlmargin for stor.

Heldigvis, i dette DriverTest eksempel er margin 0. 1 et meget sikkert spil. Her er hvorfor:

  • Når assertEquals testen fejler, svigter den med meget mere end 0. 1.

    Fejl betyder at have en driver. hastighed (lys) værdi som 0. 0 eller 10. 0.

  • I dette eksempel repræsenterer det sandsynligvis fuldstændig, on-the-nose-lighed, når assertEquals testen passerer.

    Værdien af ​​driveren. hastighed (lys) kommer direkte fra retur 30. 0 kode i liste 5. Ingen aritmetik er involveret. Så værdien af ​​chaufføren. hastighed (lys) og den forventede 30. 0 værdi skal være nøjagtig den samme (eller næsten nøjagtigt det samme).

Ved hjælp af JUnit-dummies

Valg af editor

Hvordan man skriver en check for en fremragende bill i QuickBooks Online - dummies

Hvordan man skriver en check for en fremragende bill i QuickBooks Online - dummies

Du kan Brug QuickBooks Online (QBO) Check vinduet til at skrive en check for at betale et faktura, du tidligere indtastede - noget, du ikke kan gøre i QuickBooks desktop produkt. Brug ikke Check-transaktionen, hvis du planlægger at betale flere regninger. Hvis du vælger en betalingsmodtager, for hvem der foreligger en udestående faktura, QBO ...

Sådan afskrives fakturaer med QuickBooks Online Accountant - dummies

Sådan afskrives fakturaer med QuickBooks Online Accountant - dummies

Vælger skrivefakturaer fra revisionsværktøjerne menuen i QBOA viser siden Skriv ud fakturaer, som giver dig mulighed for at se fakturaer, du måske vil afskrive, og derefter skrive dem til en konto efter eget valg. Øverst på siden indstiller du filtre for at få vist de fakturaer, du vil have ...

Importrevisorens ændringer til QuickBooks 2012 Datafil - dummies

Importrevisorens ændringer til QuickBooks 2012 Datafil - dummies

Din klient importerer de ændringer, som du ' har lavet i revisorens kopi af QuickBooks 2012-datafilen i hendes arbejdskopi af datafilen. For at gøre dette vælger klienten filen Arkiv → Revisorens Kopi → Klientaktiviteter → Kommandoen Import Revisorens Ændringer. QuickBooks viser dialogboksen Importer regnskabsførerens ændringer. For at bruge importkontoens ændringer ...

Valg af editor

Brug Flash med Nature Photography - dummies

Brug Flash med Nature Photography - dummies

Som regel afhænger du af naturlig belysning til naturfotografering. Du kan dog bruge flash-flash eller en ekstra flash-enhed til at øge naturlig belysning. On-flash-kamera De fleste digitale kameraer leveres med en flash på kameraet. Blitzenheden springer op, når det er nødvendigt. Du kan også aktivere flash på kameraet, når du skal tilføje en ...

Brug tredjeparts rå software til HDR fotografi - dummies

Brug tredjeparts rå software til HDR fotografi - dummies

Du kan købe eller downloade et væld af Råredigerere og konvertere fra tredjepart, der hjælper dig med at lave billeder med høj dynamisk rækkevidde. Hvis du er utilfreds med din nuværende software og vil prøve noget nyt, skal du hænde på en eller flere af de programmer, der er angivet i tabellen. Rå redaktører fra tredjepart Navn URL Platform (er) Freeware? ...

Brug dekorative accenter i mad stil og madfotografi - dummies

Brug dekorative accenter i mad stil og madfotografi - dummies

Når fødevaren alene ikke skaber Det drama eller den intrigue, du vil have i din fotografering med dekorative accenter - af farve, form eller tekstur - kan give dine billeder den ekstra effekt, du leder efter. Accenter er forbedringer af fødevarematerialet, og selvom de tjener formålet med at ophæve maden, er de ...

Valg af editor

Sådan finder du formatering i Word 2007 - dummies

Sådan finder du formatering i Word 2007 - dummies

Du kan bruge kommandoen Find til at skure dit Word 2007-dokument til formatering af oplysninger. Hvis du f.eks. Kun vil finde de forekomster af ordet, der ligger i fed skrift, kan du gøre det. Dette eksempel søger efter teksten gåseæg med en skriftstørrelse på 24 point i en ...

Hvordan man finder tekst i Word 2016 - dummies

Hvordan man finder tekst i Word 2016 - dummies

Ikke gider med båndet! For at finde tekst i dit Word 2016-dokument, tryk Ctrl + F, den mindeværdige tastaturgenvej til kommandoen Find. Du ser navigationsruden, svarende til hvad der vises her. Navigationsruden. Skriv den tekst, du vil lokalisere, i feltet Søg dokument. Når du skriver forekomster af teksten ...

Hvordan man finder stilarter i Word 2016 - dummies

Hvordan man finder stilarter i Word 2016 - dummies

Stilarter bor på Word 2016 Home-fanen navngivet Styles-gruppe, som vist her. Hvad du ser på båndet er Style Gallery, som kan udvides til en fuld menu med stilvalg. Hvor Word-stilarter lurer. Klik på dialogboksen launcher i det nederste højre hjørne af Styles-gruppen ...