Johan Eliasson JUnit Junit Unit Testing Unit testing för java Används för att testa att metoder/klasser beter sig som det var tänkt Många IDE:er tex Eclipse har inbyggt stöd för detta. JUnit 3 Vi skriver testklasser och låter dessa ärva från junit.framework.testcase. (JUnit klasserna måste läggas till till projektet då dessa klasser inte är med bland standardklasserna i java) Namnge testmetoderna med test som prefix (det är så de känns igen som testmetoder) Undersök de villkor som ska testas mha de olika assertmetoderna i TestCase JUnit 3 forts. Ibland vill man göra grundinställningar som ska göras innan varje test. Dessa kan göras i metoden protected void setup() som körs innan varje test i den klassen Behöver man städa upp efter testen görs detta i metoden protected void teardown() som anropas automatiskt efter varje test. Kör testen mha Run -> Run -> JUnit i Eclipse (Se till så att ni ställt in den på att använda version 3) Villkorskontroller i test Statiska metoder som finns definierade i klassen Assert (TestCase ärver från denna) asserttrue assertfalse assertnull assertnotnull assertequals Kontrollerar om två värden är lika. För objekt kontrolleras detta mha deras equals-metod. assertsame Kontrollerar om två referenser är lika assertnotsame fail() Misslyckas alltid Exempel JUnit3 import junit.framework.testcase; public class PolynomTest extends TestCase public void testcreateobject() double d[] = 1.0, 2.0; Polynom p = new Polynom(d); assertnotnull(p);
Eclipse Eclipse kom ihåg JUnit 4 Version 4 Vi behöver ej utnyttja arv Testmetoder indikeras mha att vi annoterar dem med @Test Till Test-annotationen kan man även specificera om vi förväntar oss att något särskilt undantag ska kastas @Test(expected=IndexOutOfBoundsException.class) public void outofbounds() new ArrayList<Object>().get(1); eller sätta en tidsgräns för testet @Test(timeout=100) (här 100 millisekunder) Använd assert-metoderna för att testa villkoren (samma som i JUnit 3). Ett lätt sätt att använda assert-metoderna (eftersom de nu inte är tillgängliga via arv) är att göra en static import från Assertklassen Exempel med JUnit4 import org.junit.test; import static junit.framework.assert.assertnotnull; public class JUnit4TestClass @Test public void createobject() double d[] = 1.0,2.0; Polynom p = new Polynom(d); assertnotnull(p); Versionshantering Jan Erik Moström
Johan Eliasson Versionssystem Gjorda för att användas av en eller flera personer på en eller flera platser, exempelvis: För en ensam användare som jobbar med ett projekt från flera datorer För att veta att förändringar inte skrivs över av andra då man jobbar flera tillsammans Om man jobbar många tillsammans med samma filer för att veta att dokumenten är senaste versionen. För att gå tillbaka i tiden och se tidigare versioner av dokumenten För att spåra ändringar Programvara Git, CVS, SVN (Subversion) Svn är senare programvara. Addresserar några av problemen som fanns i CVS Eclipse i labben har plugin för att jobba med SVN. CVS stöd finns med som standard. På följande adress finns en guide hur man kan komma igång med SVN i eclipse: http://help.collab.net/index.jsp?topic=/org.tigris.subclipse.doc/topics/toc.html Eclipse har dokumentation om Subversion http://www.eclipse.org/subversive/documentation/teamsupport/workspace_synch.php Vill ni använda SVN i projektet så maila support@cs.umu.se att ni vill använda det och ange användarnamn på alla medlemmar i gruppen samt kurskod (5DV133) Johan Eliasson Referensmanualen: SVN Version Control with SUBVERSION Ben Collins-Sussman et. al. Typiskt klient/server-system: Repository Version 1.7 finns nu gratis på webben: http://svnbook.red-bean.com/ och i bokform. http://creativecommons.org/licenses/by/2.0/legalcode Problemet med delade filer Låsning Detta vill man unvika: Man kan låsa filer, men...: Restriktiv metod Serialisering av arbetet Om Harry glömmer sitt lås?
Den vanligaste modellen: Harry får inte skriva över Sallys fil Copy-Modify-Merge Konfliktlösning: Merge Copy-Modify-Merge forts. Kan bli komplicerad om båda ändrat i samma del av filen Man checkar ut en del av katalogträdet med update Detta ger en lokal arbetskopia Eclipse håller reda på detta Filsystemet Varje ny revision får ett eget nummer Eclipse ordnar det med! Revisioner Eclipse Arbetsgång i ett Team Editera filen/filerna Update hämta ev andras ändringar Det kanske inte gick pga att någon annan ändrat filen Lös konflikten skapa en ny version från de två Override update Override commit - skriv över min fil - skriv över repositoriets Commit spara ändringarna
Arbetsgång - ensam Avancerat Om du jobbar ensam men har flera maskiner Update hämta din senaste kopia Om du glömmer detta steg kan du få konflikter senare Editera filen/filerna Branches Merging Tags Commit spara ändringarna Om du glömde update kan det bli problem här Kom ihåg detta steg annars är du osynkad!