TestSuite JUnit4.0

Generic1

Top Contributor
Also ich hab mir jetzt automatisch aus meiner IDE heraus eine TestSuite (JUnit4.0) erstellen lassen und bekomme da den folgenden Klassen- Kopf:

Java:
@RunWith(Suite.class)
@Suite.SuiteClasses({junittest.Main2Test.class,junittest.MainTest.class})
public class MyTestSuite {
...
}

Meine Frage jetzt, muss man die ganzen Klassen einer TestSuite mit der Annotation @Suite.SuiteClasses(...) deklarieren oder geht das irgendwie übersichtlicher, wenn man zu viele Klassen hat wird das ja eine ordentliche Wurscht :)
Besten Dank,
 
M

maki

Gast
Statische TestSuiten sind imho ein grundlegender Fehler.
Am besten vom Build Tool (Maven, Ant) dynamsiche Suiten erstellen lassen, dann vermeidet man schon ein paar Probleme und spart sich Code.
 

Generic1

Top Contributor
ich werd auf jeden Fall auf Ant umsteigen aber ich wollte das mit den TestSuiten nochmal abchecken.
Wo liegen da die Probleme bei einer statische TestSuite, viel Code ist es ja nicht,
man gibt einfach die TestCase- Klassen an und lässt die TestSuite laufen und fertig oder sehe ich da was falsch.
Die TestCase- Klassen bzw. sogar die Methoden in den TestCase- Klassen müssen sowieso unabhängig voneinander sein,
das sehe ich jetzt keine großen Probleme mit den TestSuiten??
 
M

maki

Gast
Wo liegen da die Probleme bei einer statische TestSuite, viel Code ist es ja nicht,
man gibt einfach die TestCase- Klassen an und lässt die TestSuite laufen und fertig oder sehe ich da was falsch.
Was ist, wenn du oder ein Kollege vergessen den Test einzutragen? -> missing test

Wozu also das ganze überhaupt statisch wenn es sich 1. sehr einfach (automatisch) dynamisiseren lässt und 2. Fehlerträchtig ist und mehr Code braucht als die dynamsiche Variante?

Die TestCase- Klassen bzw. sogar die Methoden in den TestCase- Klassen müssen sowieso unabhängig voneinander sein,
das sehe ich jetzt keine großen Probleme mit den TestSuiten??
Weil in statischen Suiten die Reihenfolge immer gleich bleibt, da merkt man u.U. erst viel zu spät dass die Tests doch von einander abhängig sind.
 

Generic1

Top Contributor
Bis jetzt ist es bei mir immer daran gescheitert, dass ich mich mit Ant ganz wenig bis gar nicht auskenne,
ich kenn jetzt ehrlich gesagt nur das <target> Tag, die anderen Tags sind mir aber nicht geläufig, z.B.: wie ich die Tests (TestCase's) automatisch durchlaufe.
was ich mal annehme ist, dass die Tests in einem eigenen Ordner sind und dieser Ordner nach Klassen durchsucht wird und diese werden dann ausgeführt.

Weiß jemand wie ich das in Ant machen, ich arbeite mit Netbeans, da ist Ant, so weit ich weiß, eh das Build- Tool.
Besten Dank.
 

Generic1

Top Contributor
Hätte noch eine Frage zu JUnit- Tests, wenn ich 2 Sets vergleichen will, muss ich mir dann selber ein foreach oder eine Schleife schreiben oder gibts für das auch ein assert...?

Java:
@Test
    public void testParse() {
        String picturePath = "path";
        final Handler instance = new Handler();
        final Set expResult = new HashSet<String>();
        expResult.add("String1");       // 1
        expResult.add("String2");       // 2
        expResult.add("String3");       // 3
        expResult.add("String4");       // 4
        expResult.add("String5");       // 5
        expResult.add("String6");       // 6
        expResult.add("String7");       // 7
        final Set<String> result = instance.parse(picturePath);
        for (String string : result) {    // hier mit einer Schleife vergleichen oder gibt es ein assert...
                                         
            }
        assertNotSame(expResult, result);
        assertNotNull(result);
        }
 

Generic1

Top Contributor
OK, mit assertEqual werden zwar Strings verglichen, aber die toString- Methode von Set ist eh überschrieben und deshalb kann mans machen,
Besten Dank,
 

kama

Top Contributor
Hallo,

zuerst einmal würde ich in dem Beispiel den "assertNotNull" vor dem anderen assert machen...

und wie wäre damit:
Java:
public void testParse() {
...
        final Set expResult = new HashSet<String>();
...
        final Set<String> result = instance.parse(picturePath);
        assertNotNull(result);
        assertArrayEquals(expResult.toArray(), result.toArray());

}

Gruß
Karl Heinz Marbaise
 

Ähnliche Java Themen

Neue Themen


Oben