Många datastrukturer bygger på diverse antaganden. Ta en minheap, till exempel: trädet antas vara komplett, och varje nods prioritet antas vara mindre än eller lika med dess barns prioriteter (i båda fallen med undantag för de tillfällen då datastrukturen uppdateras). Den här sortens antaganden kallas invarianter.
För att göra det lättare att hitta fel så kan man testa invarianter och andra egenskaper m h a assertions (Java-dokumentation). För att slå på testning av assertions kan man behöva använda vissa flaggor:
-ea
. Exempel: java -ea Program
.Ni kan använda ett testprogram för att underlätta testningen. Det finns kompilerat för version 8 av java, testing.jar, och för version 7, testing_java_7.jar.
Det är kanske smidigast om testprogrammet (och övriga filer som nämns nedan) placeras i samma katalog som era class
-filer/binärer. I exemplen nedan antas det att de har placerats där.
Testprogrammet kan i vissa fall köra väldigt länge. Det räcker förhoppningsvis att gå igenom några tusen testfall.
Om testprogrammet verkar ha hängt sig så är det möjligt att ni har en oändlig loop i ert program. Ni kan då använda "java -ea -jar testing.jar -v5 ...
".
Notera att testprogrammet antagligen inte fungerar för Java 6 och tidigare.
Det finns två testgeneratorer:
Lab1GenTest
söker efter tal i en genererad mängd.Lab1FileTest
tar en fil med tal och söker efter relaterade tal.Exempel (där Lab1A
är namnet på klassen som testas):
java -ea -jar testing.jar lab1test.Lab1GenTest Lab1A
java -ea -jar testing.jar lab1test.Lab1GenTest "Lab1A 50 5 80"
java -ea -jar testing.jar lab1test.Lab1FileTest "Lab1A numbers.txt"
Notera följande:
static
-nyckelordet), se då till att de variablerna inte uppdateras. Testprogrammet kan nämligen köra main
många gånger.Det finns en testgenerator:
Lab2GenTest
genererar listor med kommandon av ökande storlek.Exempel:
java -ea -jar testing.jar lab2test.Lab2GenTest Lab2
Det finns två testgeneratorer:
Lab3FileTest
tar filer med stopp och linjer och testar från alla noder till alla noder i grafen.
Lab3GenTest
testar med genererade grafer.
Notera att labbens hjälppaket, Lab3Help.jar
, behöver vara i samma mapp som testing.jar
för att det ska fungera.
Man bör testa alla exempelgrafer från labbeskrivningen, och dessutom automatiskt genererade grafer.
Exempel:
java -ea -jar testing.jar lab3test.Lab3FileTest "DijkstraStringPath stops-bvs.txt lines-bvs.txt"
java -ea -jar testing.jar lab3test.Lab3GenTest DijkstraStringPath
DijkstraStringPath
är wrapper-klassen som man måste göra för att testprogrammet ska fungera. Detta finns beskrivet i labb-pm under rubriken ``Testning''.
Testprogrammet använder JSAP, som har en licens som är en variant av LGPL (gissningsvis version 2.1).