Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού - ECLIPSE JUNIT – TDD TFD + Refactoring Παναγιώτης Σφέτσος, PhD
Απλό Παράδειγμα στο Eclipse - 1 2Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 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Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στο Eclipse είναι ενσωματωμένες οι δύο εκδόσεις του Junit, δηλ. οι εκδόσεις 3 και 4. Έτσι δεν χρειάζεται εγκατάσταση του Junit. Εμείς επιλέγουμε την έκδοση που θέλουμε. Τα βήματα: Δημιουργούμε ένα νέο Java Project. Προσθέτουμε σε αυτό από την file - > new - >ένα Junit Test Case Δηλώνουμε το όνομα της κλάσης ελέγχου (ATest) και επιλέγουμε την έκδοση του Junit που θέλουμε Δημιουργείται η κλάση ATest, με τις εντολές: import junit.framework.*; public class ATest extends TestCase {} //συμπληρώνουμε το σώμα του Test Απλό Παράδειγμα στο Eclipse - 2
4Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Run as: Junit Test…… Απλό Παράδειγμα στο Eclipse - 3
Παράδειγμα – BoxVolume (1/3) 5Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 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 == ); // λάθος στον υπολογισμό (το σωστό ) }
Παράδειγμα – BoxVolume (2/3) 6Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Παράδειγμα – BoxVolume (3/3) 7Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Διορθώνουμε, σώζουμε και ξανα-τρέχουμε το test…
Παράδειγμα – Calculator (1/2) 8Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ import junit.framework.TestCase; class Calculator { public double add(double x, double y) { return (x+y);} } public class TestCalculator extends TestCase { public void testAdd() { Calculator calc = new Calculator(); double result = calc.add(80,10); assertEquals(90, result,0); }
Παράδειγμα – Calculator (2/2) 9Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Παράδειγμα – Test suit (1/3) 10Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Όταν έχουμε όλα τα tests ανοικτά, τότε μπορούμε να δημιουργήσουμε αυτόματα το test suit, επιλέγοντας από την file - > new - > Other… - > Junit - > Junit Test Suit import junit.framework.Test; import junit.framework.TestSuite; public class AllTests { public static Test suite() { TestSuite suite = new TestSuite(AllTests.class.getName()); //$JUnit-BEGIN$ suite.addTestSuite(SimpleTest1.class); suite.addTestSuite(BoxTest.class); suite.addTestSuite(ATest.class); suite.addTestSuite(TestCalculator.class); //$JUnit-END$ return suite; }
11Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Βλέπουμε ότι κατά το “Refactoring” κάναμε λάθος στο test – BoxTest. Διορθώνουμε, σώζουμε και ξανα – τρέχουμε. Βλέπουμε ότι κατά το “Refactoring” κάναμε λάθος στο test – BoxTest. Διορθώνουμε, σώζουμε και ξανα – τρέχουμε. Παράδειγμα – Test suit (2/3)
12Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Λαμβάνουμε την πράσινη μπάρα… Παράδειγμα – Test suit (3/3)