Übungsaufgabe JUnit Test

12/21/2016 12:53 challenger77#1
Moin,

ich studiere jetzt im 1. Semester Systems Engineering und habe das Modul "Praktische Informatik 1". Wir haben momentan die Aufgabe, JUnit Test-Methoden in einer Testklasse zu schreiben, welche die Methoden aus einer normalen Klasse testen sollen. Ich kriege jedoch bei einer Methode einen Error und finde nichtmal im Internet Hilfe dazu. Deshalb wende ich mich einfach an euch.

Folgender Code ist die Methode, die getestet werden soll.

Code:
public StringSet intersect(final StringSet other) {
        if (other == null) {
            return null;
        }

        final StringSet findings = new StringSet();
        for (String string1 : elements){
            if (other.contains(string1)) {
                findings.add(string1);
            }
        }
        return findings;     
    }
elements ist hierbei ein Array.

Nun meine Testmethode.

Code:
    [MENTION=284957]test[/MENTION]
    public void testIntersect1()
    {
        StringSet stringSe1 = new StringSet();
        assertEquals(null, stringSe1.intersect(null));
        StringSet stringSe2 = new StringSet();
        stringSe2.add("A");
        stringSe2.add("B");
        stringSe2.add("C");
        StringSet stringSe3 = new StringSet();
        stringSe3.add("X");
        stringSe3.add("B");
        stringSe3.add("Y");
        assertEquals("{B}", stringSe2.intersect(stringSe3));
    }
Diese gibt folgenden Error aus:

expected: java.lang.String<{B}> but was: StringSet<{B}>


Die Methode, die getestet werden soll bestimmt die Schnittmenge zwischen zwei Mengen (in meiner Testmethode stringSe2 & stringSe3).

In meiner Testmethode ist die Schnittmenge (also die Menge, die in beiden enthalten ist) B.

Ich hoffe ihr könnt mir helfen und ich habe mein Problem präzise genug gestellt.

Frohe Weihnachten!

challenger77
12/21/2016 13:58 Mysthik#2
Quote:
Originally Posted by challenger77 View Post
Moin,

Code:
    [MENTION=284957]test[/MENTION]
    public void testIntersect1()
    {
        StringSet stringSe1 = new StringSet();
        assertEquals(null, stringSe1.intersect(null));
        StringSet stringSe2 = new StringSet();
        stringSe2.add("A");
        stringSe2.add("B");
        stringSe2.add("C");
        StringSet stringSe3 = new StringSet();
        stringSe3.add("X");
        stringSe3.add("B");
        stringSe3.add("Y");
    >>>>>    assertEquals("{B}", stringSe2.intersect(stringSe3));
    }
expected: java.lang.String<{B}> but was: StringSet<{B}>
Da ich nicht weiß wo der Fehler auftritt nehme ich mal an, dass es die letzte Zeile ist in der du einen String mit einem StringSet vergleichst. Du vergleichst hier zwei Objekte unterschiedlicher Klassen. Hast du eine contains Methode oder ähnliches implementiert? Wenn ja versuch folgendes:

Code:
assertTrue(stringSe2.intersect(stringSe3).contains("B"))




Du studierst nicht zufällig an der Universität Bremen oder? :D
12/21/2016 16:05 challenger77#3
Doch ich studiere in Bremen :D Du auch?
Genau, ich wusste nicht wie ich das bewerkstelligen sollte, den String mit dem Klassen-Objekt zu vergleichen.
Hat so aber jetzt hingehauen :)
12/21/2016 23:33 Mysthik#4
Quote:
Originally Posted by challenger77 View Post
Doch ich studiere in Bremen :D Du auch?
Ja im ersten Master Semester (Vollfach Informatik).
12/31/2016 21:09 Garuga#5
Quote:
Originally Posted by Mysthik View Post
Ja im ersten Master Semester (Vollfach Informatik).
Was für ein Zufall, ich studiere auch im 1. Master Semester Informatik in Bremen :rolleyes:
01/21/2017 16:58 Red_John#6
Aber diese Aufgabe war doch voll leicht? Wie lief die Probeklausur?

Studiere auch in Bremen, habe bei Karsten PI1 ;)
01/26/2017 18:32 challenger77#7
Jo, ich hab halt nicht so das Megaverständnis für PI :D Hab auch bei Karsten PI1, seit Übung 8 läufts aber wesentlich besser bei mir. JUnit-Tests sind meiner Meinung nach total fürn Arsch :P

Edit: Die Probeklausur hab ich mit 100% geschrieben.
01/27/2017 08:38 XxharCs#8
Du könntest auch in deiner StringSet Klasse die Methode .toString() überschreiben und einen String zurückgeben, somit müsstest du kein contains() verwenden. (Sofern ihr in der Aufgabe Methoden der vorgegebenen Klasse überschreiben dürft)
01/29/2017 16:26 Red_John#9
Also ich hab es auch mit toString() überschrieben. Aber noch keine Korrektur^^
02/02/2017 18:23 dipointed#10
Quote:
Originally Posted by challenger77 View Post
..
JUnit-Tests sind meiner Meinung nach total fürn Arsch :P

...
Keine Angst, das Verständnis kommt dann später schon noch. ;)