Sortierung in collections testen

uppss

Aktives Mitglied
Hallo Jungs und vielen Dank im Voraus!

Wie kann ich mit junit5 die Sortierung in einer Collection testen?

Java:
public void sorted() {
        List<Person> list = createList();

        List<Person> sortedList = list.stream()
                .sorted(Comparator.comparingInt(Person::getA))
                .collect(Collectors.toList());
        sortedList.forEach(System.out::println);
    }
 

Kirby.exe

Top Contributor
Du könntest entweder eine sortierte Liste selbst zusammen bauen, sprich so wie sie nach der Sortierung aussehen soll oder du verwendest eine andere Collection, sortierst die Liste. Um zu testen ob die Liste korrekt sortiert wurde assertest du die sortierte Liste mit der entweder selbst gebauten Liste oder anders sortierten Liste :)
 

uppss

Aktives Mitglied
Vielen Dank. Ich habe leider nicht zu 100% verstanden

Java:
@Test
public void test(){
    List<Person> list1 = new ArrayList<>();
    Person p1 = new Person("p1", 1);
    Person p2 = new Person("p2", 3);
    Person p3 = new Person("p3", 2);

    List<Person> sollList = new ArrayList<>();
    Person p1 = new Person("p1", 1);
    Person p2 = new Person("p2", 2);
    Person p3 = new Person("p3", 3);

    Test test = new Test();
    test.sorted(list1);
    
    wie kann ich jetzt testen? vielen Dank!
}
 

Kirby.exe

Top Contributor
Hab schon ewig kein JUnit mehr genutzt aber ich glaube es ging so:
Java:
Assert.assertEquals(list1, list2);
 

Jw456

Top Contributor
Du willst eine Liste haben zum Sortieren. Erstellen tust du eine zb „Lisst1“ aber füllen tust du sie nicht.

Du brauchst eine vergleichst Liste die die gleichen Elemente der zu sortierenden Liste in der richtigen Reihenfolge hat. Hast du auch nicht.



Du erstellt neue Elemente von Person aber der Liste gibst du sie nicht .

Und in der Vergleichs Liste hast du wieder neue Objekt . Da willst du ja die gleichen Objekte in der richtigen Reihenfolge haben zum vergleich.

Selbst wenn die Methode richtig sortiert wird der Test nicht True liefern.
 

Jw456

Top Contributor
Java:
 @Test
    public void test() {
        List<Person> list1 = new ArrayList<>();
        Person p1 = new Person("p1", 1);
        Person p2 = new Person("p2", 3);
        Person p3 = new Person("p3", 2);
        list1.add(p3);
        list1.add(p1);
        list1.add(p2);
        
        List<Person> sollList = new ArrayList<>();
        sollList.add(p1);
        sollList.add(p2);
        sollList.add(p3);
...
 

uppss

Aktives Mitglied
Du willst eine Liste haben zum Sortieren. Erstellen tust du eine zb „Lisst1“ aber füllen tust du sie nicht.
hab schnell am Handy getippt, um die Zeit nicht zu verlieren. Das kommt natürlich dazu:
list1.add(p1);
list1.add(p2);
list1.add(p3);
Du brauchst eine vergleichst Liste die die gleichen Elemente der zu sortierenden Liste in der richtigen Reihenfolge hat. Hast du auch nicht.
und auch die andere Liste:
sollList.add(p1);
sollList.add(p1);
sollList.add(p1);
Du erstellt neue Elemente von Person aber der Liste gibst du sie nicht .
oben hinzugefügt
Und in der Vergleichs Liste hast du wieder neue Objekt . Da willst du ja die gleichen Objekte in der richtigen Reihenfolge haben zum vergleich.
richrig.
test.sorted(list1);
Selbst wenn die Methode richtig sortiert wird der Test nicht True liefern.
genau das ist meine Frage, wie ich die richtige Sortierung testen kann? Vielen Dank

außerdem hat die Methode sorted() void als Rückgabetyp
wie kann ich diese sorted()-Methode testen?

Java:
public void sorted() {
        List<Person> list = createList();

        List<Person> sortedList = list.stream()
                .sorted(Comparator.comparingInt(Person::getA))
                .collect(Collectors.toList());
    }
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Java:
public void sorted() {
        List<Person> list = createList();

        List<Person> sortedList = list.stream()
                .sorted(Comparator.comparingInt(Person::getA))
                .collect(Collectors.toList());
    }
was hast du von der Methode die sortirt etwas und das wird nicht benutzt. Sinnlose Methode

Dann vielleicht die Liste als Instanzvariable und nicht lokal.

Der Methode auch die zu sortierende Liste auch übergeben und nicht in der Methode selber erzeugen.
Dann könntest du die übergebene auch bearbeiten und prüfen.
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Java:
public void sorted( List  list) {
            list  = list.stream()
                .sorted(Comparator.comparingInt(Person::getA))
                .collect(Collectors.toList());
    }
so hättest du zu mindestens eine Möglichkeit etwas zu prüfen.
 

uppss

Aktives Mitglied
Java:
public void sorted( List  list) {
            list  = list.stream()
                .sorted(Comparator.comparingInt(Person::getA))
                .collect(Collectors.toList());
    }
so hättest du zu mindestens eine Möglichkeit etwas zu prüfen.
Vielen Dank.
Ok, gehen wir weiter, da kann ich folgendes tun, tippe am Handy:

Java:
public void sorted(){
         //sortiert eine locale liste
         sorted(list);
}

public void sorted(List list){
         //sortiert irgendeine Liste
...
}

wie kann ich nun sorded(list) testen ;-)?
 

KonradN

Super-Moderator
Mitarbeiter
Bei jedem Test hast du - wie im anderen Therad beschrieben:
  • Vorbereitung eines Zustandes
  • Dann die Aktion
  • Dann den Test, ob die Aktion erfolgreich war.

Also bei einer Methode sort(List) (sorted ist ein Adjektiv und kein Verb! Methoden sollten immer ein Verb beinhalten und ausdrücken, was sie tun. Hier sortiert die Methode etwas:

  • Schaffen einer List, die nicht sortiert ist
  • Aufrufen: sort(list)
  • Prüfen, ob die Liste sortiert ist.

Und da sollte man sich auch überlegen, was man alles testen könnte:
  • Liste ist schon sortiert -> darf nicht verändert werden
  • Ganz am Anfang ist ein Element, das nach hinten muss
  • Ganz am Ende ist ein Element, das weiter nach vorne muss.
Das nur um ein paar Anhaltspunkt zu geben. Aber natürlich auch immer das typische:
  • Leere Liste
  • Liste mit nur einem Element

Du du etwas vorgibst, kannst Du das auch alles selbst testen. Du kannst also aufrufen:
Java:
List<Integer> list = List.of(3, 2, 1);
ListUtils.sort(list);
assertAll(
    () -> assertEquals(1, list.get(0)),
    () -> assertEquals(2, list.get(1)),
    () -> assertEquals(3, list.get(2)),
    () -> assertEquals(3, list.size())
);

Das wäre die ganz primitive Prüfung. Wenn das durch andere Methoden auch schon geprüft werde könnte, dann kannst Du die ggf. auch nutzen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Collections Sortieren von 3 Collections nach "einer Sortierung" Java Basics - Anfänger-Themen 3
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
A Sortierung Java Basics - Anfänger-Themen 18
G Java Sortierung Java Basics - Anfänger-Themen 3
P topologische Sortierung Java Basics - Anfänger-Themen 15
N Best Practice Ist die Sortierung richtig? Java Basics - Anfänger-Themen 3
M Topologische Sortierung Java Basics - Anfänger-Themen 1
S Sortierung Java Basics - Anfänger-Themen 4
K Sortierung eines int-Arrays von groß nach klein Java Basics - Anfänger-Themen 3
S Sortierung funktioniert nicht Java Basics - Anfänger-Themen 1
S Was ist schneller: direkte Sortierung oder indirekt ueber eine SortedMap..? Java Basics - Anfänger-Themen 10
F Collections Sortierung und Einfügen von Elementen Java Basics - Anfänger-Themen 1
L Lexikographische Sortierung eines Strings Java Basics - Anfänger-Themen 6
A Kleinste Ziffer im Array suchen um Sortierung zu erzeugen Java Basics - Anfänger-Themen 2
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
D Sortieren in Abhängigkeit von einer anderen Sortierung Java Basics - Anfänger-Themen 14
K Sortierung von Zahlen Java Basics - Anfänger-Themen 13
S Sortierung funktioniert nicht Java Basics - Anfänger-Themen 9
B Hiilfee! Step by Step sortierung eines Arrays... Java Basics - Anfänger-Themen 19
G Bubblesort - Falsche Sortierung Java Basics - Anfänger-Themen 6
T Datenstruktur für Sortierung Java Basics - Anfänger-Themen 4
R Shellsort Sortierung Java Basics - Anfänger-Themen 5
K Sortierung von Anzahl der Wörtern in ArrayList Java Basics - Anfänger-Themen 4
U Alter Berechnung + sortierung Java Basics - Anfänger-Themen 6
H Sortierung eines String[][] mit Bedingung Java Basics - Anfänger-Themen 7
M Frage zur Sortierung Java Basics - Anfänger-Themen 8
S problem mit sortierung interface comperator Java Basics - Anfänger-Themen 11
B OOP Comparator - Sortierung "optisch" Darstellen Java Basics - Anfänger-Themen 17
F Treemap und Sortierung? Java Basics - Anfänger-Themen 2
L Random Sortierung Java Basics - Anfänger-Themen 9
A Sortierung (Gernerics & Liste) Java Basics - Anfänger-Themen 9
J Sortierung Java Basics - Anfänger-Themen 11
F compareTo - Sortierung nach 2 Argumenten Java Basics - Anfänger-Themen 10
? hilfe bei Fehlersuche Sortierung List Java Basics - Anfänger-Themen 5
O Sortierung Denkanstoss Java Basics - Anfänger-Themen 7
G ArrayList mit ArrayList als Inhalt - komische Sortierung? Java Basics - Anfänger-Themen 12
P Brauche Hilfe bei Sortierung eines JTrees ! Java Basics - Anfänger-Themen 14
K Kurze Frage zur Sortierung von Array-Inhalten Java Basics - Anfänger-Themen 5
G String Sortierung nach mehreren Kriterien Java Basics - Anfänger-Themen 4
G Sortierung eines Arrays nach mehreren Kriterien Java Basics - Anfänger-Themen 6
Q HashMap Sortierung Java Basics - Anfänger-Themen 11
S Sortierung Rückgängig machen?! Java Basics - Anfänger-Themen 2
X Collections.sort als Lambda Java Basics - Anfänger-Themen 14
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
O Collections.sort und List.sort mit Lambda Verwirrung Java Basics - Anfänger-Themen 5
B Collections.sort mit zwei Bedingungen? Java Basics - Anfänger-Themen 4
I Collections.shuffle funktioniert nicht Java Basics - Anfänger-Themen 1
M Collections Frage Java Basics - Anfänger-Themen 1
D Methoden Collections.shuffle mit bestimmtem Startwert? Java Basics - Anfänger-Themen 8
T Java Collections Java Basics - Anfänger-Themen 58
X Collections Collections Maps Frage Java Basics - Anfänger-Themen 4
C Collections: private Map Java Basics - Anfänger-Themen 4
V Collections Java Basics - Anfänger-Themen 3
A Collections Java Basics - Anfänger-Themen 2
P collections.sort Java Basics - Anfänger-Themen 2
R Iterationsreihenfolge über Collections Java Basics - Anfänger-Themen 4
S Klassen Collections Java Basics - Anfänger-Themen 10
J Polymorphie Iteratoren statt Collections Java Basics - Anfänger-Themen 13
H Etwas wie sort() / sorted() in JAVA-Collections? Java Basics - Anfänger-Themen 5
F Collections ArrayList oder Hashmap mittel Collections.sychronised Java Basics - Anfänger-Themen 6
S Bestimmte Objekte aus Collections anwählen/herausbekommen Java Basics - Anfänger-Themen 8
M Collections mit >2 type Parametern? Java Basics - Anfänger-Themen 8
S Frage zu Collections.frequency() Java Basics - Anfänger-Themen 3
T Collections Übersicht Collections Java Basics - Anfänger-Themen 4
X Collections Inhalt von zwei Collections prüfen Java Basics - Anfänger-Themen 4
A Generische Collections und Vererbung Java Basics - Anfänger-Themen 2
K Telefonbuch Implementation mit Java Collections Java Basics - Anfänger-Themen 4
G Collections.binarySearch(LinkedList): cannot find method Java Basics - Anfänger-Themen 6
T Kleine Frage zu Collections Java Basics - Anfänger-Themen 3
A Collections und ArrayList Java Basics - Anfänger-Themen 2
S Klasse Mit Collections Java Basics - Anfänger-Themen 32
X DB4O Collections and Arrays, brauche dringend Hilfe! Java Basics - Anfänger-Themen 3
D Datentypen Generische Collections und Warnings Java Basics - Anfänger-Themen 8
K Aufgabe Collections Java Basics - Anfänger-Themen 2
D Collections - subList erstellen Java Basics - Anfänger-Themen 4
S Frage zu Enumerator der trad.Collections Java Basics - Anfänger-Themen 8
M Instanzen, Referenzen und Collections Java Basics - Anfänger-Themen 3
Dit_ Collections.sort(..); | Anwendung Java Basics - Anfänger-Themen 4
T array erweitern/flexible ohne collections usw. Java Basics - Anfänger-Themen 3
S Collections Java Basics - Anfänger-Themen 13
M Collections{Liste aus Objekten erzeugen] Java Basics - Anfänger-Themen 19
S generics und Collections#unmodifiableList Java Basics - Anfänger-Themen 2
G Wann Arrays, wann Collections? Java Basics - Anfänger-Themen 36
N Collections Sort ArrayList<> Java Basics - Anfänger-Themen 7
N Suche Infos zu Maps - Collections Java Basics - Anfänger-Themen 4
G erstes Arbeiten mit Collections Java Basics - Anfänger-Themen 17
Zed Collections? ArrayList, Vector. Java Basics - Anfänger-Themen 2
M Collections kopieren (ArrayList<Point>) Java Basics - Anfänger-Themen 3
T Fragen zu Collections Java Basics - Anfänger-Themen 2
J Collections "schachteln" Java Basics - Anfänger-Themen 5
ff Java Collections Java Basics - Anfänger-Themen 4
H Collections Frameworks Java Basics - Anfänger-Themen 38
T Object Collections durchsuchen und nutzen Java Basics - Anfänger-Themen 6
S Mit Collections elemente sammeln Java Basics - Anfänger-Themen 7
D Collections.sort() frage Java Basics - Anfänger-Themen 6
G Java Collections Framework : id + 5 Werte , gibt es sowas Java Basics - Anfänger-Themen 4
frau-u Collections und Interfaces Java Basics - Anfänger-Themen 2
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
U JUnit testen auf SomeException Java Basics - Anfänger-Themen 5
Düsseldorf2002 Testen meines Algorithmus Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben