Junittest

SuperSheriff

Mitglied
Hi,

ich hab noch einen bug in meinem Programm bzw ein kleiner fehler im junittest schlägt noch aus und ich weiß einfach nicht wieso.

Wäre sehr dankbar, wenn mir jmd helfen könnte.

hier ist die methode die noch nicht richtig funktionier. der link zeigt das üb.

https://www.dropbox.com/s/rfc8kt93u19vy9r/Vorfuehraufgabe09.pdf?dl=0


Vielen Dank schon mal!


Java:
package studiplayer.audio;

import java.util.Comparator;

public class AlbumComparator implements Comparator<AudioFile>{

    @Override
    public int compare(AudioFile af0, AudioFile af1) {
        if(af0 != null && af1 != null){
           
            if(!(af0 instanceof TaggedFile) && af1 instanceof TaggedFile){
                return -1;
            }else if(af1 instanceof TaggedFile && !(af0 instanceof TaggedFile)){
                return 1;
            }else if(!(af0 instanceof TaggedFile) && !(af1 instanceof TaggedFile)){
                return 0;
            }else{
                return ((TaggedFile) af0).getAlbum().compareTo(((TaggedFile) af1).getAlbum());
                }
        }else{
            throw new NullPointerException("incorrect album references!");
        }
    }

}
 

AndiE

Top Contributor
Kannst du noch die Testklasse posten und die Stelle, wo ein Test nicht erfüllt wird. ansonsten wird eine Abfrage zwei Mal ausgeführt, wenn ich richtig gesehen habe (!(af0..)&& af1)
 

SuperSheriff

Mitglied
wenn jmd von euch eclipse benutzt könnte ich euch auch das ganze projekt schicken. Dann hättet ihr die junittests mit dabei, denn ich werde aus den junittests leider nicht schlau...
 

mrBrown

Super-Moderator
Mitarbeiter
Was ist denn überhaupt der Fehler?

Und wie sieht die Methode jetzt aus?
 
Zuletzt bearbeitet:

AndiE

Top Contributor
Code:
        // create a PlayList
        PlayList pl1 = new PlayList();
        try {
           // pl1.add(new TaggedFile("audiofiles/kein.wav.sondern.ogg"));
            pl1.add(new TaggedFile("audiofiles/Rock 812.mp3"));
            pl1.add(new WavFile("audiofiles/wellenmeister - tranquility.wav"));
            pl1.add(new TaggedFile("audiofiles/wellenmeister_awakening.ogg"));
        } catch (NotPlayableException e) {
            fail("Cannot create AudioFile:" + e.getMessage());
        }
        assertEquals(pl1.size(),3);
        pl1.sort(SortCriterion.ALBUM);
        System.out.println(pl1.toString());
        assertEquals(
                "Sorting according to criterion album is not correct",
                "[wellenmeister - tranquility - 02:21, "
                        //+ "kein.wav.sondern - 00:00, "
                        + "Eisbach - Rock 812 - The Sea, the Sky - 05:31, "
                        + "Wellenmeister - TANOM Part I: Awakening - TheAbsoluteNecessityOfMeaning - 05:55]",
                pl1.toString());
    }
}

Das ist GRÜN. Der Grund ist recht einfach. Du willst eine ungültige Datei einfügen. Überprüfe deine Anwendung danach.
 

mrBrown

Super-Moderator
Mitarbeiter
Er hatte mir Privat geschrieben, der Fehler (zumindest der, den er mit geschickt hat) ist kein fehlgeschlagener Test, sondern nur ein geprinteter Stacktrace. Innerhalb des Tests wird getestet, ob die auch gefangen wird, und das wird sie korrekt.
 

AndiE

Top Contributor
Code:
 // pl1.add(new TaggedFile("audiofiles/kein.wav.sondern.ogg"));
Ich habe diese Zeile auskommentiert. "kein.wav.sondern.ogg"dürfte nach meinem Wissen nicht als gültiger Name durchgehen, weil er mehr als ein "dot(.) hat.
 

mrBrown

Super-Moderator
Mitarbeiter
was hast du nun geändert?

und der junittest ist jzt grün? also der der klasse playlist
WAS ist denn bei dir der Fehler?

Code:
 // pl1.add(new TaggedFile("audiofiles/kein.wav.sondern.ogg"));
Ich habe diese Zeile auskommentiert. "kein.wav.sondern.ogg"dürfte nach meinem Wissen nicht als gültiger Name durchgehen, weil er mehr als ein "dot(.) hat.

Pfade können so viele Punkte haben wie sie wollen - zumindest unter allen unix-artigen. Ist das unter Windows etwa anders?
 

mrBrown

Super-Moderator
Mitarbeiter
So, ich bekomme als einzige Exception einen NullPointer in AlbumComparator.java:18

Das Problem ist, das Album i TaggedFile uU null ist, wenn kein Autor hinterlegt ist. Lösung: Fang das ab, oder initialisiere das Default mit irgendeinem Wert, zB leerer String.
 

SuperSheriff

Mitglied
sowas ?

Java:
package studiplayer.audio;

import java.util.Comparator;

public class AlbumComparator implements Comparator<AudioFile>{

    @Override
    public int compare(AudioFile af0, AudioFile af1) {
        if(af0 != null && af1 != null){
          
            if(!(af0 instanceof TaggedFile) && af1 instanceof TaggedFile){
                return -1;
            }else if(af0 instanceof TaggedFile && !(af1 instanceof TaggedFile)){
                return 1;
            }else if(!(af0 instanceof TaggedFile) && !(af1 instanceof TaggedFile)){
                return 0;
            }else{
                if(((TaggedFile)af0).getAlbum() == null || ((TaggedFile)af1).getAlbum() == null){
                    throw new NullPointerException("incorrect values");
                }else{
                    return ((TaggedFile) af0).getAlbum().compareTo(((TaggedFile) af1).getAlbum());
                    }
                }
        }else{
            throw new NullPointerException("incorrect album references!");
        }
    }
}
 

mrBrown

Super-Moderator
Mitarbeiter
So schmeißt du selbst die Exception, die sonst durchs compare geschmissen werden würde, ändert nichts ;)

Wie könntest du denn nach Albumname sortieren, wenn ein Albumname leer ist?
 

Neue Themen


Oben