Fehler bei der Implementierung

kfadi

Mitglied
hallo zusammen,
ich habe schon eine Klasse, die Datum heißt und prüft, ob ein Jahr ein Schaltjahr ist oder nicht, die ist richtig geschrieben, aber bei dieser Aufgabe bekomme ich Fehler
habt ihr Idee, woran den Fehler liegen kann ?
danke
die Aufgabe heißt :
Schreiben Sie eine Klasse DatumTest mit einer Klassenmethode test, die keine Argumente annimmt, und die einen Wahrheitswert zurückgibt. Sie testet gegebene Implementierungen der Methode istSchaltjahr der Klasse Datum aus Aufgabe B03A4. Die Testmethode soll genau dann false zurückgeben, wenn für eine Implementierung ein Fehler gefunden wird. Hinweis: Beachten Sie, dass Sie nicht nur positive Fälle überprüfen müssen („Jahr X ist ein Schaltjahr“), sondern auch negative („Jahr X ist kein Schaltjahr“). Hinweis: Orientieren Sie sich an dem Beispiel für Unit-Tests aus der Vorlesung. Die Klasse sollte aber keine main-Methode enthalten. Sie finden in LEA zu dieser Aufgabe eine entsprechende Vorlage, die sich einfach um weitere Testfälle zu ergänzen lässt. Überlegen Sie, welche unterschiedlichen Fälle von 3 Aufrufen vorkommen können. Sehen Sie jeweils einen repräsentativen Aufruf vor und prüfen Sie, ob das Ergebnis der erwartete Wert ist. Testen Sie die Klasse mit fehlerhaften Implementierungen von Datum. Werden diese erkannt?

und der Code ist :
public class DatumTest {
public static boolean istSchaltjahrCheck(int j, boolean erw) {
boolean erg = Datum.istSchaltjahr(j);
if (erg != erw) {
System.out.println("FEHLER: istSchaltjahr(" + j + ")=="
+ erg + " statt " + erw);
}
return erg == erw;
}
public static boolean istSchaltjahrTest() {
return istSchaltjahrCheck(2016, true)
& istSchaltjahrCheck(2018, false)
& istSchaltjahrCheck(2000, true)

}
public static boolean test() {
return istSchaltjahrTest();
}
}

der Fehler ist :
!!! erste Tests der Funktionalitaet - Bestehen notwendig, aber nicht hinreichend fuer Erfolg !!!

TestSuite 'Pre':
================================
FAIL | Testfall 'DatumTest_1_A_A'
................................
DatumTest.test();
// Implementierung von 'istSchaltjahr' wird nun im Hintergrund gegen andere ausgetauscht
DatumTest.test();
--------------------------------
FEHLER: zuletzt erwarteter und tatsaechlich erhaltener Wert unterscheiden sich
erwartet: false
erhalten: true
================================
TestSuite fehlgeschlagen :-(
 
Du hattest doch schon einen Thread mit dem Thema, oder war das jemand anderes?

Dein Test ist so einfach falsch. Dein Test soll die Mwthode ja komplett testen. Und das tut sie schlicht nicht! Bei Deinem Test werden fehlerhafte Implementationen nicht gefunden.
 
Dir duzen uns hier.

Du musst einen Test schreiben, der alle Möglichkeiten abdeckt.

Beachten Sie, dass Sie nicht nur positive Fälle überprüfen müssen („Jahr X ist ein Schaltjahr“), sondern auch negative („Jahr X ist kein Schaltjahr“)

Was alles getestet werden muss, ergibt sich aus
Sie testet gegebene Implementierungen der Methode istSchaltjahr der Klasse Datum aus Aufgabe B03A4.

Aber das müsste auf diese Fälle hinauslaufen:
Jahr ist durch 400 teilbar
Jahr ist durch 100 teilbar und nicht durch 400
Jahr ist durch 4 teilbar und nicht durch 100
Jahr ist nicht durch 4 teilbar

Hinzu kommen ggf. noch weitere Fälle falls bestimmte Bereiche nicht definiert sind (z. B. Werte < 0)

Hast du das alles getestet? In deinem Test sehe ich das nicht.
 
ja ich habe schon eine Klasse dafür geschrieben, die Datum heißt, ich zeige dir den Code :
public class Datum {
public static boolean istSchaltjahr(int j) {
Boolean istjahrSchaltjahr = false;
if (j < 1583) {
if (j % 4 == 0) {
istjahrSchaltjahr = true;
}
} else {
if ((j % 4 == 0) && ((j % 100 != 0) || ((j % 100 == 0) && (j % 400 == 0)))) {
istjahrSchaltjahr = true;
}
}
return istjahrSchaltjahr;
}
}

in der vorherige Übung steht, dass wir beide Fälle untersuchen sollen, vor und nach 1583
 
Es geht jetzt um den Test - nicht um Deine Implementierung.

Dein Test muss JEDE Implementierung testen können, ob diese korrekt ist. Sprich: Du oder irgend jemand sonst ändert etwas und durch den Unit Test muss sicher gestellt sein, dass ein möglicherweise gemachter Fehler erkannt wird.

Daher: Stell sicher, dass Du alle Fälle, die es geben kann, überprüfst!
 

Zurück
Oben