# Code Testbar machen



## Vogelmitschnauze007 (17. Nov 2021)

Guten Tag liebe Forenmitglieder,
wir haben die Aufgabe bekommen einen Bruchrechner zu schreiben. Dies ist mir erfolgreich gelungen. Nun muss ich auch noch ein Testprogramm schreiben und habe schon angefangen zu probieren aber komme nicht sehr gut damit klar, deswegen hier meine Frage und Bitte: Wie kann ich diesen Code testbar machen?

Das ist mein Bruchrechner:


```
class Bruch{
    public static void main(String[] args){
        int ro = Integer.parseInt(args[0]);
        int z1 = Integer.parseInt(args[1]);
        int n1 = Integer.parseInt(args[2]);
        int e = Integer.parseInt(args[2]);
        int z2 = Integer.parseInt(args[3]);
        int n2 = Integer.parseInt(args[4]);
        
        
        //Fehlerbehandlung für Division durch 0
        if (n1 == 0){
        System.out.println("Fehler! Division durch 0 ist nicht möglich. Bruch: "+z1+" durch "+n1);}
        if (n2 == 0){
        System.out.println("Fehler! Division durch 0 ist nicht möglich. Bruch: "+z2+" durch "+n2);}
        
        
        //Addition
        if (ro==1){
            Addition(z1,n1,z2,n2,e);
        }

        //Subtraktion
        if (ro==2){
            Subtraktion(z1,n1,z2,n2,e);
        }
        
        //Multiplikation
        if (ro==3){
            Multiplikation(z1,n1,z2,n2);
        }
        
        //Division
        if (ro==4){
            Division(z1,n1,z2,n2);
        }
    }
    
    
    
    //Methoden:
    
    
    
    //Addition
    public static void Addition(int a,int b,int c,int d,int s){
        a=a*d;
        b=b*d;
        c=c*s;
        d=d*s;
        a=a+c;
        int ggT=Kuerzen(a,b);
        a=a/ggT;
        b=b/ggT;
        int [] ergadd = {a,b};
        System.out.println("Das Ergebnis der Addition ist: "+a+"/"+b);
    }
    
    //Subtraktion
    public static void Subtraktion(int a,int b,int c,int d,int s){
        a= a*d;
        b= b*d;
        c= c*s;
        d= d*s;
        a=a-c;
        int ggT=Kuerzen(a,b);
        a=a/ggT;
        b=b/ggT;
        int [] ergsub = {a,b};
        System.out.println("Das Ergebnis ist: "+a+"/"+b);
    }
    
    //Multiplikation
    public static void Multiplikation(int a,int b,int c,int d){
        a= a*c;
        b= b*d;
        int ggT=Kuerzen(a,b);
        a=a/ggT;
        b=b/ggT;
        int [] ergmul = {a,b};
        System.out.println("Das Ergebnis ist: "+a+"/"+b);
    }
    
    //Division
    public static void Division(int a,int b,int c,int d){
        a=a*d;
        b=b*c;
        int ggT=Kuerzen(a,b);
        a=a/ggT;
        b=b/ggT;
        int [] ergdiv = {a,b};
        System.out.println("Das Ergebnis ist: "+a+"/"+b);
    }
    
    //Kuerzen
    public static int Kuerzen(int x,int y){
        if (y==0) {
            return x;
        }else{ return Kuerzen(y,x%y);
        }
        
    }
}
```


----------



## kneitzel (17. Nov 2021)

Es ist immer schlecht, wenn man Funktion und Ausgabe miteinander verknüpft. Wenn die Methoden das Ergebnis zurück geben, dann kann man Tests schreiben, die die Methoden mit Zahlen aufrufen um dann das Ergebnis mit asserts zu prüfen.

Ansonsten solltest Du Dir angewöhnen:
a) Java Naming Standard: Methoden mit einem kleinen Buchstaben starten.
b) Sinnvolle Bezeichner! a,b,c,d,s sind KEINE guten Bezeichner!


----------

