Hej allesammen
Jeg har indtil videre ikke prøvet at teste når jeg skulle udvikle, eller i hvertfald ikke bevidst, men har fået fortalt at det er en god måde at udvikle på, da det er med til at eliminerer evt. bugs der kan opstå senere i ens applikation. Til formålet har jeg erhvervet mig JUnit værktøjet, og også læst/lært lidt om hvordan dette fungerer.
Mit spørgsmål er så om hvordan jeg skal begynde at teste? Skal jeg f.eks. skrive selve test klassen først, og herudfra lave mine klasser, som jeg ønsker at teste, eller skal jeg udvikle mine klasser, og herefter skrive selve test klassen, hvor jeg nu ved hvilke metoder jeg skal teste mm?
Grunden til at jeg er i tvivl, er at de nogen steder på nettet fortæller mig at jeg skal skrive en test case (forstår dette som en test klasse), før jeg overhovedet begynder at lave den del af min applikation, som jeg gerne vil teste, mens de andre steder viser en klasse de allerede har lavet, og herefter skriver en test klasse til at teste denne klasse og dens metoder.
Som ekstra information, kan jeg fortælle hvordan jeg mener at det skal gøres med kode eksempler:
1. Jeg opretter min/mine klasser som jeg skal bruge i min applikation. Skal jeg f.eks. lave en lommeregner, så opretter jeg klassen Calculation med dens lommeregner metoder.
- public class Calculation {
-
- //Add numbers
- public double addNumbers(double first, double second) {
- return first + second;
- }
-
- //Subtract numbers
- public double subtractNumbers(double first, double second) {
- return first - second;
- }
-
- //multiply numbers
- public double multiplyNumbers(double first, double second) {
- return first * second;
- }
-
- //divide numbers
- public double divideNumbers(double first, double second) {
- return first / second;
- }
-
- }
2. Herefter skal jeg så teste min klasse, og laver nu først min test klasse
- //Imports til JUnit mm. skal være her
- public class CalculationTest {
-
- private Calculation calc;
-
- @BeforeClass
- public void createCalcObject() {
- calc = new Calculation();
- }
-
- @AfterClass
- public void deleteCalcObject() {
- calc = null;
- }
-
- @Test
- public void testAddNumbers() {
- assertEquals(6, calc.addNumbers(4, 2));
- }
-
- @Test
- public void testSubtractNumbers() {
- assertEquals(2, calc.subtractNumbers(4, 2));
- }
-
- @Test
- public void testMultiplyNumbers() {
- assertEquals(8, calc.multiplyNumbers(4, 2));
- }
-
- @Test
- public void testDivideNumbers() {
- assertEquals(2, calc.divideNumbers(4, 2));
- }
-
- }
Er dette den rigtige fremgangsmetode, og i så fald, hvorfor er der så nogle der skriver at man skal lave sin test case før man overhovedet går i gang med at programmerer de klasser der skal testes?
Håber at i gider at hjælpe mig med at forstå dette, og håber også at jeg har belyst min problematik godt nok