JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3

Relevanta dokument
Versionshantering. Jan Erik Moström

Ni ska ha en uppsättning verktyg som ni kan använda i era fortsatta studier (och även efteråt) Lektion 1. Applikationsprogrammering i Java 7,5 hp

JUnit 4 - användning. Grunderna. org.junit. org.junit.test. Henrik Bergström DSV SU/KTH. Innehåller bland annat:

Projektarbete. Johan Eliasson

Versionshantering. Problem som uppstår i större (samt även mindre) projekt:

Versionshantering med Git

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015

Institutionen för datavetenskap HT /2008. Testning med JUnit

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten

Har funnits nästan lika länge som datorerna. Manuell process, svarta tavlan Verktygsstöd kom tidigt redan i början på

Grundläggande termer. Några olika system. F11 Grunderna i Versionshantering. Git basic. Origin. Git basic. Git basic. Local #1. Local #3.

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

ID1004 Laboration 3, 5-6 November 2012

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

Testning. 1DV404, HT14 Jesper Andersson Kap 21 + Testing Primer

Introduktion till git

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Classes och Interfaces, Objects och References, Initialization

Testramverk och Model based testing med java i praktiken

Mer om kodkvalitet. Mer om kodkvalitet. Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité?

Continuous Integration med Jenkins. Linus Tolke Enea Experts

JAVA Mer om klasser och objektorientering

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Kopiering av objekt i Java

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Versionshantering med Git. Henrik Henriksson 17 april 2018

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

1 Vad är Versionshantering? 2 Git. 2.1 GitHub

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 11

Länkade listor och automatisk testning

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Release. Konfigurations & Versionshantering samt Subversion. Konfigurations vs Versionshantering. CI -definition. Henrik Bergström

Objektorienterad Programmering DAT043. Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

TDDC76 - Programmering och Datastrukturer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

KAP 18 SQL SERVER AGENT

Projekt. Roller i ett industriellt projekt. Projekt. Roller. Roller

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Eclipse en handledning

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

tentaplugg.nu av studenter för studenter

DAT043 - Föreläsning 7

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

PROGRAMMERINGSTEKNIK TIN212

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Introduktion till Git

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

tentaplugg.nu av studenter för studenter

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Labb 1: Vad, hur, och varför?

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

ID1004 Laboration 4, November 2012

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

2 Eclipse en handledning

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Repetition av OOP- och Javabegrepp

F9 del B Organisatoriskt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Repetition av OOP- och Javabegrepp

Tfn Telephone Kontr Checked. Revisionshistoria Revision history Rev Namn Name Datum Date Ändring Change

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Föreläsning 1 & 2 INTRODUKTION

TDP005. Föreläsning 2. Filip Strömbäck

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Eclipse en handledning

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Dynamisk bindning och polymorfism

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Objektorienterad Programmering (TDDC77)

Lösningar för tenta 2 DAT043,

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Transkript:

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!