ich werde ab nächstem Semester programmieren in der Uni haben und möchte schon mal ein bisschen üben, um nicht ganz ins kalte Wasser geschmissen zu werden Hab hierzu eine Klasse geschrieben, die beliebig viele int summiert. Jetzt würde ich diese gerne mit JUnit testen. Leider komme ich hier überhaupt nicht weiter... Die Beispiele, die ich mir zu JUnit angesehen habe, kann ich irgendwie nicht auf meine Klasse anwenden oder ich stellt mich einfach zu dumm dafür an... Könnte mir jemand vielleicht helfen, wie so ein JUnit Test aussehen kann und was ich bei diesem Test alles genau testen soll?
Vielen Dank!
Java:
importjava.util.Scanner;publicclassAddition{publicstaticvoidsum(int[] array){int summe =0;for(int i =0; i < array.length; i++){
summe += array[I];}System.out.println("Die Summe Ihrer Zahlen ist: "+ summe);}publicstaticvoidmain(String[] args){int number;Scanner input =newScanner(System.in);System.out.print("Wie viele Zahlen möchten Sie summieren?");
number = input.nextInt();int[] array2 =newint[number];for(int i =0; i < array2.length; i++){System.out.print("Zahl eingeben:"+(i +1)+": ");
array2[I]= input.nextInt();}sum(array2);}}
Dein jetziger Code ist auch quasi untestbar geschrieben
Deine sum macht aktuell zwei Dinge: die Zahlen aufaddieren und sie ausgeben. Besser ist, sie macht nur eins davon, nämlich das addieren und dann den Wert zurückgeben.
Dann kannst du sum schon mal unabhängig von der Ein- und Ausgabe testen.
Die Ein- und Ausgabe lässt sich prinzipiell auch testen, das erfordert aber noch mehr Änderungen, und wird mMn zu viel für deinen jetzigen Kenntnisstand, erstmal solltest du sum testen
Vielen Dank für deine Antwort.
Ja das stimmt. Leider weiß ich nicht wie ich das auseinander bekomme. Wenn ich die Ausgabe wegnehme, kann ich doch auch nichts mehr summieren...?
Könntest du mir vielleicht helfen, den Code einfacher zu gestalten, glaub ich denk da einfach um zu viele Ecken?
Nur bedingt... Habs jetzt die Methode geändert, wie du gesagt hast. Aber die Ausgabe bleibt doch wegen dem Verweis auf die summe weiterhin oben im System.out.println...
public class Addition {
public static int sum(int[] array) {
int summe = 0;
for (int i = 0; i < array.length; i++) {
summe += array;
}
System.out.println("Die Summe Ihrer eingegebenen Zahlen ist: " + summe);
return summe;
}
public static void main(String[] args) {
int number;
Scanner input = new Scanner(System.in);
System.out.print("Wie viele Zahlen möchten Sie summieren?");
number = input.nextInt();
int[] array2 = new int[number];
for (int i = 0; i < array2.length; i++) {
System.out.print((i + 1) + " " + "Zahl eingeben:");
array2 = input.nextInt();
}
sum(array2);
}
}
Super vielen Dank!
Eine allerletzte Frage, wenn ich jetzt mehrere Tests untereinander schreibe wie läuft das dann ab? Testet das Programm jeden Test hintereinander durch und gibt für jeden Test einen grünen oder einen roten Balken aus? Oder muss ich jeden Test einzeln auswählen und ausführen lassen?
Eine allerletzte Frage, wenn ich jetzt mehrere Tests untereinander schreibe wie läuft das dann ab? Testet das Programm jeden Test hintereinander durch und gibt für jeden Test einen grünen oder einen roten Balken aus? Oder muss ich jeden Test einzeln auswählen und ausführen lassen?
Welche man startet, kann man meistens auswählen, entweder einzelne Methode, oder eine Klasse, oder ein package, etc...
Ausgeführt werden die dann alle nacheinander, jeder wird dann entweder als Rot oder Grün markiert, Balken gibts vermutlich für Gruppen von Tests, um Rote und Grüne relativ gegeneinander zu stellen.