Hvad er JUnit?
cherami
JUnit er en open source Java-test bruges til at skrive og køre repeterbare test.Han er et system af xUnit test af enheder ramme for en instans (for Java-sproget).Den omfatter følgende funktioner:
1, til testning forventede resultater af den påstand (påstand)
2, for at dele fælles testdata testværktøjer
3, til hjælp for organisationen og driften af test suite test
4, grafik og tekst test runner
JUnit blev oprindeligt udviklet af Erich Gamma (GOF One) og Kent Beck (xp og en af pionererne refactor) forberedt.
Skal bemærkes, at JUnit almindeligvis anvendes til test af enheder, og derfor har brug for at forstå den interne struktur i den kode, der testes (de såkaldte white-box test), den anden er xp JUnit programmering og refactoring (refactor) blev kraftigt anbefaletværktøjer, automatisk unit test, fordi de omstændigheder, i høj grad kan øge effektiviteten i udvikling, men i virkeligheden er at skrive test-kode tager en masse tid og kræfter, så fordelene ved at bruge denne ting Hvor er det?Jeg tror, det er dette:
1, til xp programmering, opfordrer til, at skrive test før at skrive kode, der kan tvinge dig til at tænke ordentligt inden skrivning af kode i koden (metoder) af funktionen og logik, eller skrive koden er ustabil, så er du nødt samtidig med attest kode og den konkrete kode, vil denne arbejdsbyrde stige betydeligt.Derfor i xp programmering, er den grundlæggende proces dette: ideen - "skriver test kode -" til at skrive kode - "test, og skrivning prøver og skrive kode er trinvis, og skrive en lille test, som kode i forberedelsen af fremtidigehvis problemerne bliver fundet flere blokke kan spores tilbage til det problem, reducere problemerne med at rette fejlen tilbage
2, til genopbygning, er dens fordele og xp programmering lignende, fordi genopbygningen også er forpligtet til at ændre en lille test, mindre tidskrævende på grund af at vende tilbage fejl.
3, for ikke-to ovenstående situationer, når vi udvikler en hensigtsmæssig brug af skrive JUnit test er nødvendig, fordi den generelle test vi også nødt til at skrive kode, kan du ikke bruge den oprindelige JUnit, hvis du bruger JUnit, men også modInterface (metoder) til at udarbejde test-kode vil reducere fremtidige vedligeholdelsesarbejder, såsom ændringer i metoden efter (dette svarer til genopbygningsarbejdet.)JUnit påstand, fordi der er en anden funktion, hvis testresultaterne ikke består testen vil fortælle os, at der ikke passere, hvorfor, og hvis den tidligere almen praksis er at skrive nogle test kode er at se på deres produktion, og derefter at bestemme selv resultaterne af at bruge den korrekteved hjælp af JUnit fordel er, at dette resultat er korrekt at dømme det til at udfylde, vi behøver kun at kigge på det ret til at fortælle os, om resultaterne kan i almindelighed vil i høj grad forbedre effektiviteten.
JUnit Kom godt i gang
cherami orden
Installation af JUnit
Installationen er meget simpel, først følgende adresse for at hente en ny zip-pakken:
http://download.sourceforge.net/junit/
Efter downloadet, uddrag til dine foretrukne bibliotek, er den antagelse, JUNIT_HOME, så JUNIT_HOME junit.jar under pakken tilføjet til dit system CLASSPATH miljøvariabel for IDE miljøet, behovet for øget brug af JUnit projektetlib, dens forskellige IDE indstillinger har forskellige indstillinger, hvor ikke meget at sige.
Hvordan man bruger JUnit til at skrive tests?
Den enkleste eksempel:
1, skaber en underklasse af testcase:
pakke junitfaq;
importere java.util .*;
importere junit.framework .*;
public class SimpleTest udvider testcase {
offentlige SimpleTest (String navn) {
super (navn);
}
2, skriv en testmetode hævde de forventede resultater:
public void testEmptyCollection () {
Indsamling indsamling = ny ArrayList ();
assertTrue (collection.isEmpty ());
}
Bemærk: JUnit test tilgang anbefales som begyndelsen på den metode, der skal testes, således at disse metoder kan automatisk fundet af test.
3, skrive en suite () metode, som anvender refleksion til dynamisk at skabe en metode, der indeholder alle de testXxxx test suite:
public static Test suite () {
tilbagevenden nye testsuite (SimpleTest.class);
}
4, skrive en main () metode til at køre tekst-mode anordning til at lette driften af testen:
public static void main (String args []) {
junit.textui.TestRunner.run (suite ());
}
}
5, skal du køre testen:
Kør i tekst-mode:
java junitfaq.SimpleTest
Gennem testresultaterne er:
.
Tid: 0
OK (1 test)
Tid sagde testen på antallet af små punkter, og prøvning viser OK.Ellers den lille punkt bag mærket F, viser, at testen mislykkedes.
Hver af testresultater bør være OK, så for at forklare testen er vellykket, hvis det ikke lykkedes de oplysninger, straks vil følge anvisningerne revideres.
JUnit test rapporten, hvis det ikke lykkes, vil det skelne mellem fejl (fejl) og fejl (fejl).Fejl er koden i din metode mislykkes på grund at hævde, og fejlen er forårsaget af unormal kode, som f.eks ArrayIndexOutOfBoundsException.
Grafisk køre:
java junit.swingui.TestRunner junitfaq.SimpleTest
Testresultaterne via den grafiske brugerflade af den grønne linje delvist.
Ovenfor er det enkleste prøvesag i den egentlige prøve, vi teste funktionen af en klasse er ofte nødvendigt at udføre nogle almindelige operationer er nødvendige senere for at fuldføre ødelæggelsen af ressourcer (f.eks netværksforbindelser, databaseforbindelser, tæt åbne filerosv.), testcase klasse giver os en opsætning metode og teardown metoder, opsætning metode til at teste dit indhold i forberedelsen af testcase subklasse metoden før hver testXxxx vil køre, og teardown metoder indhold efter afslutningen af hver metode vil blive henrettet testXxxx.Den delte initialisering koden alene, men også eliminerer den potentielle mellem hver test kode interaktion.
JUnit bedste praksis
Martin Fowler sagde: "Når du forsøger at udskrive nogle oplysninger eller debugging et udtryk, skrive nogle test kode til at erstatte de traditionelle metoder." I første omgang vil du opdage, at du altid ønsker at skabe nogle nye lampeserie, og testenprogrammering synes at bremse dig ned.Kort efter, men vil du opdage, at du gentager de samme Fixture, og den nye test er som regel kun indebærer at tilføje en ny test-metode.
Du kan skrive en masse test kode, men du snart opdage, at du forestiller kun en lille del af testen er virkelig nyttige.Du er nødt til at teste, er det kriterium, vil mislykkes, at du tror, vil ikke svigte disse forsøg, eller tror du, de skulle fejle testen for succes.
Som vi nævnte tidligere test er en proces uden afbrydelse.Når du har en test, bør du sikre, at deres arbejde har været at teste dit arbejde ved at tilføje ny kode.Må ikke køre et par dage eller den sidste test dag, bør du køre denne test kode.Denne investering er meget lille, men det kan arbejde på at sikre, at du får pålidelige kode.Reducer dit omarbejde sats, vil du have mere tid til at skrive arbejde kode.
Tror ikke, at presset ikke skrive test-kode.I stedet skriver test kode vil gradvist at reducere din stress, bør testes ved at skrive kode, du har nøjagtig den adfærd i klassen forståelse.Du vil være hurtigere til at skrive kode for at arbejde effektivt.
Her er nogle specifikke færdigheder i skriftligt test-kode eller god praksis:
1. Brug ikke testcase konstruktøren initialiserer Fixture, men hellere bruge setup () og teardown () metode.
2. Stol ikke på eller ud fra, at rækkefølgen af prøvekørslerne fordi JUnit testmetode med Vector gemt.Så forskellige platforme vil være i en anden rækkefølge, fjerne fra Vector testmetoder.
3. For at undgå bivirkninger i forberedelsen af en testcase.For eksempel: Hvis der efterfølgende test afhænger af den specifikke transaktion data, skal du ikke indsende transaktionsdata.Vil simpelthen rulle på det.
4. Når arve en test klasse, skal du huske at ringe til superklassen setup () og teardown () metode.
5. Vil teste koden og arbejder kode sammen, samtidig udarbejder og opdaterer.(Brug af JUnit Ant skulle understøtte opgaven.)
6. Test klasser og forsøgsmetoder, bør have en konsekvent navngivning.Hvis arbejderklassen navn med prøven for at danne testen klassen navn.
7. For at sikre, at testen er uafhængig af tid, ikke er afhængige af forældede data, der anvendes til test.Resulterede i den efterfølgende vedligeholdelse af processen er vanskelige at reproducere testen.
8. Hvis du skriver software til det internationale marked, til forberedelsen af prøven overveje, når internationale faktorer.Native Locale ikke kun til test.
9. Så meget som muligt at give brugen af JUnit til at hævde / ikke bestået og metoden til håndtering af undtagelser kan gøre koden mere koncis.
10. Testen skal være så lille som muligt, gennemførelse af hastigheden.
Kombination af JUnit og myre
cherami Links
ant indeholder to mål: JUnit og junitreport
Kør alle test cases, og generere html-formateret rapport
At gøre følgende:
1. ANT_HOMElib bibliotek på junit.jar
. 2 Rediger build.xml, tilføje følgende:
property name="report" value="report" / target name="junitreport" depends="clean, compile" JUnit printsummary = "på" gaffel = "sand "haltonfailure =" false "failureproperty =" tests.failed "showoutput =" true " classpath refid="myclasspath"/ formatter type="xml"/ batchtest todir = "$ {rapport}" fileset dir="${build}" Include name="**/*Test.*"/ /fileset / batchtest / JUnit junitreport todir="${report}" fileset dir="${report}" omfatte navn = "TEST-*. xml "/ / fileset report format="frames" todir="${report}"/ / junitreport mislykkes, hvis =" tests.failed "; --------------------------------------------------------- En eller flere test mislykkedes, skal du kontrollere rapporten for detaljer ... --------------------------------------------------------- / mislykkes / mål
Kør dette mål, vil ant køre hver testcase
Mappe i rapporten er der en masse TEST *. xml og nogle sider
Åbne rapporten bibliotek index.html kan du se en meget intuitiv testkørsel rapporter på et øjeblik.