Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού JUNIT - Test First Design Παναγιώτης Σφέτσος, PhD

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού JUNIT - Test First Design Παναγιώτης Σφέτσος, PhD"— Μεταγράφημα παρουσίασης:

1 Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού JUNIT - Test First Design Παναγιώτης Σφέτσος, PhD

2 Απλό Παράδειγμα…. 2Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Junit 3.x import junit.framework.*; public class ATest extends TestCase { public ATest(String name) { super(name); } public void testATest() { int answer = 2; assertEquals((1+1), answer); }} Εισαγωγή των κλάσεων της junit Η κλάση Ελέγχου Ο δομητής της κλάσης (κληρονομικότητα) Η μέθοδος του Test.

3 Παράδειγμα – BoxVolume (1/3) 3Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ import junit.framework.*; public class BoxTest extends TestCase { class Box { double width; double height; double depth; Box(double x, double y, double z) { width = x; height = y; depth = z; } double volume() {return width * height * depth;}} public void testAdd() { Box mybox1 = new Box(10, 20, 15); Box mybox2 = new Box(3, 6, 9); double vol; vol = mybox1.volume(); assertTrue(vol == ); vol = mybox2.volume(); assertTrue(vol == ); }}

4 Παράδειγμα – BoxVolume (2/3) 4Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Προσέξτε τις εντολές assert…

5 Παράδειγμα – BoxVolume (3/3) 5Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Προσέξτε τις εντολές assert…Λάθος στην πρώτη assert.

6 Παράδειγμα – Junit3.x 6Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ To 0 ονομάζεται παράγοντας Δέλτα και ορίζεται για ένα σίγουρο αποτέλεσμα (περιθώριο τιμών +/-) στα floating point αποτελέσματα. import junit.framework.TestCase; public class TestCalculator extends TestCase { public void testAdd() { Calculator calc = new Calculator(); double result = calc.add(50,10); assertEquals(60, result, 0 ); }

7 Παράδειγμα – Junit3.x 7Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

8 Junit 3.x vs. Junit 4.x 8Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ  Στο Junit 3.x είχαμε : 1) κληρονομικότητα (..extends TestCase) 2) κάθε μέθοδος-Test ξεκινά με την δεσμευμένη λέξη test 3) άμεση χρήση των Assert-εντολών  Στο Junit 4.x έχουμε : 1) Annotations μετά την Java 5.0 (..όχι κληρονομικότητα) 2) κάθε μέθοδος-Test δηλώνεται με το 3) χρήση των Assert-εντολών, με την import (δες παρακάτω) 4) έλεγχοι με exceptions 5) έλεγχοι με timeout  Στο Junit 3.x είχαμε : 1) κληρονομικότητα (..extends TestCase) 2) κάθε μέθοδος-Test ξεκινά με την δεσμευμένη λέξη test 3) άμεση χρήση των Assert-εντολών  Στο Junit 4.x έχουμε : 1) Annotations μετά την Java 5.0 (..όχι κληρονομικότητα) 2) κάθε μέθοδος-Test δηλώνεται με το 3) χρήση των Assert-εντολών, με την import (δες παρακάτω) 4) έλεγχοι με exceptions 5) έλεγχοι με timeout

9 Junit 3.x vs. Junit 4.x 9Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 6)παράληψη μεθόδου ελέγχου (και με σχόλιο) test auto den douleyei 7)ευελιξία : αντί των SetUp() και TearDown(). 8)παραμετρικά tests με την χρήση 9)νέα Assert που υποστηρίζει arrays: assertEquals(array1, array2); 6)παράληψη μεθόδου ελέγχου (και με σχόλιο) test auto den douleyei 7)ευελιξία : αντί των SetUp() και TearDown(). 8)παραμετρικά tests με την χρήση 9)νέα Assert που υποστηρίζει arrays: assertEquals(array1, array2);

10 Junit 3.x vs. Junit 4.x 10Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ  Εκτελείς ελέγχους Junit4 με τον Junit3 – runner, χρησιμοποιώντας τον Junit4 Adapter: public static junit.framework.Test suite() { return new JUnit4TestAdapter(SimpleMathTest.class); }  Όπως και για το Junit3 δεν απαιτείται δομητής.  Εκτελείς ελέγχους Junit4 με τον Junit3 – runner, χρησιμοποιώντας τον Junit4 Adapter: public static junit.framework.Test suite() { return new JUnit4TestAdapter(SimpleMathTest.class); }  Όπως και για το Junit3 δεν απαιτείται δομητής.

11 Junit παράδειγμα – 1/2 11Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ import org.junit.*; import static org.junit.Assert.*; public class RectangleTest { Rectangle r; Rectangle[] rList=new // Ekteleitai prin apo ka8e Test. public void testSetup() {System.out.println("Arxi/-kopoihsi tou // Ekteleitai meta apo ka8e Test. public void testComplete() {System.out.println("Telos tou Test.");} import org.junit.*; import static org.junit.Assert.*; public class RectangleTest { Rectangle r; Rectangle[] rList=new // Ekteleitai prin apo ka8e Test. public void testSetup() {System.out.println("Arxi/-kopoihsi tou // Ekteleitai meta apo ka8e Test. public void testComplete() {System.out.println("Telos tou Test.");} Εισαγωγή των κλάσεων της junit Εισαγωγή των Assert Η κλάση Ελέγχου Πριν από κάθε test Μετά από κάθε test

12 Junit παράδειγμα – 2/2 12Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού public void test1() {r=new Rectangle(); try { assertTrue("Test 1: Oi arhikes times einai lathos.", r.getH()==0 && r.getW()==0); System.out.println("To Test-1 oloklirothike me epityhia."); } catch (AssertionError e) { System.out.println(e.getMessage()); } public void test1() {r=new Rectangle(); try { assertTrue("Test 1: Oi arhikes times einai lathos.", r.getH()==0 && r.getW()==0); System.out.println("To Test-1 oloklirothike me epityhia."); } catch (AssertionError e) { System.out.println(e.getMessage()); } } Η μέθοδος Ελέγχου


Κατέβασμα ppt "Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού JUNIT - Test First Design Παναγιώτης Σφέτσος, PhD"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google