[Test] JUnit bästa praxis


Vad är JUnit?
cherami
JUnit är ett open source Java testning ramverk som används för att skriva och köra repeterbara tester.Han är ett system av xUnit enhetstestning ram för en instans (för java språket).Den innehåller följande funktioner:
1, för att testa de förväntade resultaten av påståendet (påstående)
2, för att dela gemensamma testdata testverktyg
3, för att underlätta för den organisation och drift av testerna testsvit
4, grafik och text test runner
JUnit utvecklades ursprungligen av Erich Gamma (GoF One) och Kent Beck (xp och en av pionjärerna Refactor) beredd.
Bör noteras att junit vanligtvis används för enhetstestning, och behöver därför förstå den interna strukturen i koden som testas (så kallade white-box testning), den andra är xp junit programmering och refactoring (Refactor) var starkt rekommenderatverktyg, automatisk enhetstestning eftersom de omständigheter i hög grad kan öka effektiviteten i utvecklingen, men i själva verket är skriftligt test kod tar mycket tid och ansträngning, då fördelarna med att använda det här Var är den?Jag tror att det är detta:
1, för xp programmering, uppmanar till att skriva prov före att skriva kod, som kan tvinga dig att tänka ordentligt innan du skriver koden i koden (metoder) av funktion och logik, eller skriva koden är instabilt, så behöver du samtidigt somprovningsmetod och den faktiska koden kommer detta arbetsbörda öka betydligt.Därför, i xp programmering, är den grundläggande processen här: idén - "skriva test kod -" för att skriva kod - "testa och skriva prov och skriva kod sker stegvis, och skriva ett litet test som kod i förberedandet av framtidaOm problem uppstår fler block kan spåras till problemet, minska svårigheterna att rätta felet tillbaka
2, för återuppbyggnaden, är dess fördelar och xp programmering liknande, eftersom återuppbyggnaden är också skyldigt att ändra ett litet test, mindre tidskrävande på grund av att återvända fel.
3, för icke-två ovannämnda situationer, när vi utvecklar lämplig användning av skriva junit test är nödvändigt, eftersom det allmänna testet måste vi också skriva kod, kan du inte använda original junit, om du använder JUnit, utan även motInterface (metoder) för att förbereda testa kod kommer att minska framtida underhåll, såsom ändringar i metoden efter (det här är likvärdigt med återuppbyggnadsarbetet.)Junit påstående eftersom det finns en annan funktion, om testresultaten inte klarar testet kommer berätta för oss att inte passera, varför, och om den tidigare allmän praxis är att skriva några prov kod är att titta på sin produktion, och sedan bedöma själva resultaten av att använda rättanvända JUnit fördel är att detta resultat är korrekt att döma den till komplett, behöver vi bara titta på det rätt att berätta för oss om resultaten kan i allmänhet kommer att avsevärt förbättra effektiviteten.
JUnit Komma igång
cherami beställning
Installera JUnit
Installationen är mycket enkel, första följande adress för att ladda ner en ny zip-paket:
http://download.sourceforge.net/junit/
Efter hämtat, extrahera till din favorit katalog är antagandet JUNIT_HOME, sedan JUNIT_HOME junit.jar enligt paketet till din system CLASSPATH miljövariabel, för IDE miljön, behovet av ökad användning av JUnit projektetlib, dess olika IDE inställningar har olika inställningar, där inte mycket att säga.
Hur du använder JUnit för att skriva prov?
Det enklaste exemplet:
1, skapa en underklass av testfall:
paket junitfaq;
import java.util .*;
import junit.framework .*;
public class SimpleTest utökar testfall {
offentliga SimpleTest (String namn) {
super (namn);
}
2, skriv en testmetod hävda de förväntade resultaten:
public void testEmptyCollection () {
Provtagning = new ArrayList ();
assertTrue (collection.isEmpty ());
}
Obs: JUnit test strategi rekommenderas i början av den metod som skall testas, så att dessa metoder automatiskt kan hittas genom att testa.
3, skriva en svit ()-metod, som använder eftertanke för att dynamiskt skapa en metod som innehåller alla testXxxx testsvit:
public static Testsvit () {
return new testsuite (SimpleTest.class);
}
4, skriver en main ()-metoden för att köra enheten textläge att underlätta tillämpningen av testet:
public void main (String args []) {
junit.textui.TestRunner.run (svit ());
}
}
5, köra testet:
Kör i textläge:
java junitfaq.SimpleTest
Genom testresultaten:
.
Tid: 0
OK (1 prov)
Tid sade i testet av antalet små punkter, och om mätningar visar OK.I annat fall anger den lilla punkten bakom märkt F, att testet misslyckades.
Var och en av testresultaten skulle vara OK, så för att förklara testet lyckas, om misslyckade informationen kommer omedelbart följ instruktionerna revideras.
JUnit provningsrapport om inte lyckas kommer det skilja mellan fel (fel) och fel (fel).Misslyckande är koden i din metod misslyckas på grund att hävda, och felet orsakas av onormal kod, exempelvis ArrayIndexOutOfBoundsException.
Grafiskt kör:
java junit.swingui.TestRunner junitfaq.SimpleTest
Testresultaten genom det grafiska gränssnittet i det gröna fältet delvis.
Dessa är de mest enkla prov, det verkliga provet, vi testa funktionen av en klass är det ofta nödvändigt att utföra några vanliga verksamhet, efter slutförandet av förstörelsen av de resurser som krävs (t.ex. nätanslutningar, databaskopplingar, nära öppna fileretc.) och med testfall klass oss med en setup metod och nedkoppling metoder, setup metod för att testa ditt innehåll i beredningen av testfall underklassen metoden före varje testXxxx kommer att köras, och nedkoppling metoder för innehåll efter utgången av varje metod kommer att utföras testXxxx.Den delade initieringskod bara, men även eliminerar den potentiella mellan varje test kod interaktion.
JUnit bästa praxis
Martin Fowler sade: "När du försöker skriva ut några uppgifter eller felsökning ett uttryck, skriva några test kod för att ersätta de traditionella metoder." Till en början kommer du att märka att du alltid vill skapa några nya Fixtur, och testetprogrammering verkar sakta ner dig.Strax efter, men du kommer att märka att du upprepar samma fixtur och det nya testet är oftast bara innebär att en ny testmetod.
Du kan skriva en massa test kod, men snart upptäcker att du planerar bara en liten del av testet är mycket bra.Du måste testa är den test som kommer att misslyckas, att du tror inte kommer att misslyckas dessa tester, eller tror du de skulle misslyckas testet av framgång.
Som vi nämnde tidigare testning är en process utan avbrott.När du har ett test, bör du se till att deras arbete har varit att testa ditt arbete genom att lägga till ny kod.Kör inte med några dagars eller det senaste testet dagen bör du köra det här testet kod.Denna investering är mycket liten, men det kan arbeta för att säkerställa att du får tillförlitlig kod.Minska dina omarbeta kurs kommer du att ha mer tid att skriva fungerande kod.
Tro inte att trycket inte skriver provningsmetod.Istället skriver provningsmetod gradvis kommer att minska din stress, bör testas genom att skriva kod, har du exakt beteende för klassen förståelse.Du kommer att vara snabbare att skriva kod för att arbeta effektivt.
Här är några specifika färdigheter i att skriva prov kod eller bra lösningar:
1. Använd inte testfall konstruktorn initierar Fixtur, utan hellre använda setup () och nedkoppling ()-metod.
2. Lita inte på eller anta att den ordning provkörningar, eftersom JUnit testmetoden med Vector sparas.Så plattformar kommer att vara i en annan ordning, ta bort från Vector testmetoder.
3. För att undvika biverkningar av preparatet av ett testfall.Till exempel: Om efterföljande test beror på viss transaktion data, inte tillhandahåller transaktionsdata.Kommer helt enkelt att rulla på den.
4. När ärvde en test klass, kom ihåg att ringa superklasskonstruktorn setup () och nedkoppling ()-metod.
5. Kommer testa koden och arbeta kod tillsammans, samtidigt sammanställa och uppdatera.(Med junit Ant fick stöd uppgiften.)
6. Testa klasser och metoder test bör ha en konsekvent namnsystem.Om arbetarklassen namnet med testet för att bilda namnet test klassen.
7. För att säkerställa att testet är oberoende av tid, lita inte på inaktuella uppgifter som används för testning.Resulterade i den efterföljande underhåll av processen är svår att återge på prov.
8. Om du skriver mjukvara för den internationella marknaden, till utarbetandet av testet bör tänka på när internationella faktorer.Native Språk inte bara för testning.
9. Så mycket som möjligt för att ge användningen av JUnit att hävda / misslyckas och metoden för hantering av undantag kan göra koden mer kortfattad.
10. Testet ska bli så liten som möjligt, genomförandet av hastigheten.
Kombination av JUnit och ANT
cherami Länkar
myra har två mål: JUnit och junitreport
Kör alla testfall, och generera HTML-formaterad rapport
Att göra följande:
1. ANT_HOMElib katalogen på junit.jar
. 2 Ändra build.xml, lägg till följande:
property name="report" value="report" / target name="junitreport" depends="clean, compile" junit printsummary = "på" gaffel = "sanna "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}" omfatta name = "TEST-*. xml "/ / FileSet rapportinställningar format="frames" todir="${report}"/ / junitreport misslyckas om =" tests.failed "; --------------------------------------------------------- En eller flera prov misslyckades, klicka på rapporten för detaljer ... --------------------------------------------------------- / underkänd / target
Kör detta mål kommer myra köra varje testfall
Nummer i rapporten finns det en hel del test *. xml och några sidor
Öppna index.html rapporten katalogen kan du se en mycket intuitiv rapporter testkörning med ett ögonkast.