Junit-Test / Jumble

  • Hallo,

    bin leider noch ziemlicher Newbie im Umgang mit Junit und Jumble und wäre sehr froh und dankbar, wenn mir jemand von Euch beim folgenden Beispiel vielleicht auf die Sprünge helfen kann. Beim Versuch die Test-Class mit diesem Unit-Test zu jumblen, erhalte ich immer die Fehlermeldung "Test Class is broken" (lösche ich den Test raus, kompiliert er fehlerfrei), ich gehe also davon aus dass die Test-Methode eine fehlerhafte Passage in sich trägt, bin nach unzähligen Umformulierungsversuchen aber am Ende meines Lateins angelant. Bin für jeden Input dankbar.

    Hier liegt der Hund irgendwo begraben:

    public void testkillmutant2(){
    try {
    one=new Stack(2);
    int two=2;
    one.push(two);
    one.push(two);
    failNotEquals("Messages do not correspond", "String is full", one.isFull());}

    catch (FullStackException fse) {

    }
    }

    Danke für eure Mithilfe,
    cheers
    alex

  • Beim Ansehen fallen mir ein paar Dinge auf (mit dem Hinweis, dass ich mit Jumble noch nichts gemacht habe und ich mich mal auf JUnit beziehe, aber ich denke die Probleme liegen bereits dort):

    Gehört vor die Methode nicht ein test damit die Methode als Testmethode für JUnit erkannt wird?

    Code
    @Test public void testkillmutant2() { ... }


    Sollte es außerdem nicht heissen:

    Code
    @Test(expected=FullStackException.class) public void ...


    Damit sollte das ganze Werfen und Fangen der Exception inkl. Fehlermeldung JUnit übernehmen. Man braucht in der Testmethode dann nur noch den Overflow provozieren (dh. kommt die Exception nicht, ist der Test fehlgeschlagen).

    Das failNotEquals hat zudem folgende Schnittstelle:

    Code
    static void failNotEquals(String message, Object expected, Object actual)


    Scheint mir nicht sonderlich stimmig zu sein, wenn da "String is full" mit dem Ergebnis einer "is..."-Methode (boolean?) verglichen wird.

    Und evtl. könnte man das one = new Stack(2); noch in eine @Before-Methode stecken, wenn mehrere Testfälle damit abgedeckt werden sollen.

    Und noch was:
    - Sprechende Variablennamen verwenden (one, two?)
    - Wenn new Stack(2) bedeuten soll, dass 2 Elemente reingehen sollen, warum dann schon beim 2. Element eine FullStackException?
    - "Messages do not correspond" Scheint mir für diesen Fall keine passende Fehlermeldung zu sein, genauso wenig wie "String is full" zu einem Stack passt.
    - Der Name des Tests an sich sagt nicht wirklich viel aus (obwohl ich natürlich den Kontext nicht kenne)

    Ich würde es also so probieren:

    Code
    @Test (expected=FullStackException.class) public void testStackoverflow(){
    [INDENT]myStack=new Stack(2);
    myStack.push("erstes");
    myStack.push("zweites");
    myStack.push("das dritte ist eins zu viel");[/INDENT]}

    Einmal editiert, zuletzt von Ramses13 (3. April 2010 um 21:35)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!