tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
18563
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Hallo,

    ich würde gerne ein paar JUnit-Tests durchführen, und diese Tests in einer JUnit-Test-Suite zusammenfassen, um alle gemeinsam auszuführen. Ich benutze Eclipse 3.3.0 Europa Release, und JUNit 4.4.3.1 (glaube ich jedenfalls, im Eclipse/Plugin Ordner gibt es das Verzeichnis "org.junit4_4.3.1" - allerdings gibt es auch das Verzeichnis "org.junit_3.8.2.v200706111738", welches jedoch leer ist).

    Um einen Test zu erstellen, mache ich nen REchtsklick im Package Explorer und wähle "New" -> "JUnit Test Case". Dann kann ich verschiedene Method-Stubs auswählen, alles wird erstellt und ich kann diesen Test fahren.

    Wähle ich jedoch "New" -> "JUnit Test Suite", so erscheint das Fenster für eine neue Test-Suite und im unteren bereich könnte man die Testklassen auswählen, die in die Suite eingefügt werden sollen. Dieses ist bei mir jedoch leer und ich sehe keine Möglichkeit, dort Tests hinzuzufügen (es gibt neben der Liste nur die Buttons "Select All" und "Deselect All").

    Finishe ich das ganze, so wird eine Datei mit diesem Inhalt erstellt:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    public class AllTests
    {
        public static Test suite()
        {
            TestSuite suite = new TestSuite( "Test for de.test.lib" );
            //$JUnit-BEGIN$
            
            //$JUnit-END$
            return suite;
        }
    }


    Aber was soll ich damit anfangen? Wieso kann ich in dem Wizard meine Test-Klassen nicht sehen?


    Über Hilfe würde ich mich sehr freuen!


    Vielen Dank
     

  2. #2
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Kann mir denn keiner helfen? Ich möchte doch nur alle meine JUnit Tests in einer Suite zusammen ausführen. Aber warum stehen meine Tests nicht in dem Neue-JUnit-Test-Suite-Wizard-Fenster? Ich weiß einfach nicht, wie ich da meine Tests hinzufügen kann :-/
     

  3. #3
    Andron Andron ist offline Mitglied Gold
    Registriert seit
    Jun 2006
    Beiträge
    180
    Versuch mal so:

    Code java:
    1
    
    suite.addTestSuite(MeineKlasseTest.class);

    Übrigens, es gibt viele gute Seiten, auch auf Deutsch, wo das alles erklärt ist.
    Z.B.: http://www.torsten-horn.de/techdocs/java-junit.htm
     

  4. #4
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Zitat Zitat von Andron Beitrag anzeigen
    Versuch mal so:

    Code java:
    1
    
    suite.addTestSuite(MeineKlasseTest.class);

    Übrigens, es gibt viele gute Seiten, auch auf Deutsch, wo das alles erklärt ist.
    Z.B.: http://www.torsten-horn.de/techdocs/java-junit.htm
    Danke für Deinen Vorschlag. Wenn ich jedoch mit Eclipse einen neuen JUnit Test erstelle (mit dem Wizard, der mir schonmal alle Method Stubs erstellt), dann ist der Test eine einfache Klasse, die nicht von "TestCase" abgeleitet ist. Ich kann den Test dennoch problemlos ausführen!

    Das hier funktioniert z.B.:

    Code java:
    1
    2
    3
    4
    5
    6
    
    @Test( expected = RuntimeException.class )
    public void testBaseDirCheck() {
        // Must throw a runtime exception if basedir not exist
        @SuppressWarnings( "unused" )
        ResourceManager rm = new ResourceManager( "this/should/not/exist" );
    }

    Das Verzeichnis existiert nicht, und die Klasse ResourceManager sollte eine RuntimeException werfen. Da dies mit der Annotaion "@Test( expected = RuntimeException.class )" angegeben wurde, ist der Test erfolgreich.

    Diese vorgehensweise habe ich aus irgendeinem Beispiel... ich glaube von der JUnit Doku selbst.

    Leite ich die Testklasse nun von "TestCase" ab, um Dein Vorschlag mit "suite.addTestSuite(MeineKlasseTest.class);" zu verwenden, so schlägt mein Testcode von oben fehl, obwohl er es nicht sollte.

    Irgendwas stimmt doch hier nicht - wieso z.B. leitet Eclipse meine Testklasse nicht gleich von "TestCase" ab? Kann es vielleicht daran liegen, dass ich die neueste Version von JUnit verwende?

    Hat sonst noch jemand eine Idee?


    Vielen Dank!
     

  5. #5
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Kann mir denn keiner helfen? Ich verstehe meine Problematik einfach nicht.Ist es immer so, dass Test-Klasse von "TestCase" abgeleitet werden? Aber warum macht Eclipse das dann nicht automatisch beim Erstellen einer solchen Testklasse? Und wieso funktioniert mein oben angegebener Unit Test nicht mehr, wenn ich von "TestCase" ableite?

    Über Hilfe würde ich mich wirklich sehr freuen

    Danke!
     

  6. #6
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Nunja es handelt sich da um unterschiedliche Vorgehensweisen. Die eine ist Tests über Annotations durchzuführen und die andere manuell über Code.

    Wenn du sie mit normalen Code ausführen willst dann erweiterst du TestCase, lässt jede Methode mit test beginnen und benutzt assert um den Vergleich von erhaltenem Ergebnis und gewünschten Ergebnis durchzuführen.

    Dort scheint es eine nette Übersicht zu geben: http://www.frankwestphal.de/JUnit4.0.html

    Das Problem ist wohl dass Eclipse nur Klassen zur Auswahl anbietet die TestCase erweitern, nur dass passt eben nicht zum neuen Prinzip der Testerstellung mit Annotations. Also musst du die Klassen selber zur Suite hinzufügen: http://radio.javaranch.com/lasse/200...024535662.html
     

  7. #7
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Danke für Deine Antwort. Der letzte Link ist genau das, was ich gesucht hatte - ich konnte es einfach nicht finden und stieß immer wieder nur auf Codebeispiele, bei denen die Testsuites auf die "alte" Weise eingebunden wurden.

    Allerdings frage ich mich, warum Eclipse wunderbar damit klarkommt, einen UnitTest mit Annoatations zu erstellen, aber keine TestSuite auf die neue Art und weise generieren kann, schon merkwürdig.
     

  8. #8
    hagbard23 hagbard23 ist offline Mitglied Bronze
    Registriert seit
    Oct 2007
    Beiträge
    26
    ich mache das so...:

    testklasse1:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    public class TestSth extends TestCase
    {
     
        public void setUp() throws Exception
        {
            //set up sth
        }
     
        public void testLoadSubordinateAssembly() throws Exception
        {
           //test sth 
        }
     
        public void tearDown() throws Exception
        {
         //tear down sth
        }
    }

    testklasse2:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    public class TestSthOther extends TestCase
    {
     
        public void setUp() throws Exception
        {
            //set up sth
        }
     
        public void testLoadSubordinateAssembly() throws Exception
        {
           //test sth 
        }
     
        public void tearDown() throws Exception
        {
         //tear down sth
        }
    }

    und dann:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    package editorTests;
     
    import junit.framework.Test;
    import junit.framework.TestSuite;
     
    import junit.textui.TestRunner;
     
    public class EditorTests extends TestSuite
    {
     
        public static void main(String[] args)
        {
            TestRunner.run(suite());
        }
     
        public static Test suite()
        {
     
            TestSuite suite = new EditorTests("editor Tests");
            suite.addTestSuite(TestSthOther .class);
            suite.addTestSuite(TestSth.class);
            return suite;
        }
     
        public EditorTests(String name)
        {
            super(name);
        }
     
    }
     

  9. #9
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Jap, aber das ist JUnit 3.8. Ich glaube DarthShader hat der Mischmasch aus dem 4er Annotationsstyle (in den Testklassen) und dem 3er Suiteaufbau irritiert.

    Gruß
    Ollie
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  10. #10
    hagbard23 hagbard23 ist offline Mitglied Bronze
    Registriert seit
    Oct 2007
    Beiträge
    26
    was ist denn eigentlich das tolle neue an junit 4?
     

  11. #11
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Es ist einiges flexibler (kein Zwang, sich in eine Klassenhierarchie zu hängen), vieles kürzer ("expected" and der @Test Annotation um das Fliegen einer Exception zu erwarten) usw. usw. Kein Riesenunterschied, eher subtile Änderungen, die hier und da schon Erleichterung bringen. Google ist dein Freund, es gibt massig Vergleiche da draussen

    REINHAUN!
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  12. #12
    hagbard23 hagbard23 ist offline Mitglied Bronze
    Registriert seit
    Oct 2007
    Beiträge
    26
    na ich komm gut klar mit 3.8...wenn ich ein neues testsys aufsetze, werde ichs mir mal anschaun...
     

  13. #13
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Jap, das meinte ich mit "subtil, aber hier und da leichter". Ein bestehendes Projekt würde ich auch nicht umstellen. Neues mit 4 anzufangen macht aber durchaus Sinn.

    Gruß
    Ollie
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  14. #14
    hagbard23 hagbard23 ist offline Mitglied Bronze
    Registriert seit
    Oct 2007
    Beiträge
    26
    die dinge die ich gern machen würde sind anders...

    bsp. vernünftiges gui testing...ich benutze gerade swt bot, sehr geiles teil aber noch etwas grün hier und da...der witz is das das auch unit tests sind....

    mocking ohne spring bze. dependecy injection...da gibs sachen easyMock oder so, hab ich mir noch nicht anschaun können...

    grobgranulare tests auf package/eclipse plugin ebene...
     

  15. #15
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Zitat Zitat von hagbard23 Beitrag anzeigen
    die dinge die ich gern machen würde sind anders...

    bsp. vernünftiges gui testing...ich benutze gerade swt bot, sehr geiles teil aber noch etwas grün hier und da...der witz is das das auch unit tests sind....
    Nananana... vorsicht. Nur weil Test mit JUnit implementiert sind, sind sie noch lange keine Unittests. Ein Unittest definiert sich nicht über die technologie mit der er umgesetzt ist, sonder im Umfang des zu testenden Codes - ergo in der definition, was eine Unit überhaupt ist. Im Normalfall ist das eine einzelne Klasse, deren Dependencies gemockt werden.

    mocking ohne spring bze. dependecy injection...da gibs sachen easyMock oder so, hab ich mir noch nicht anschaun können...
    Mocking ohne Spring geht, Mocking ohne DI ist effektiv unmöglich. D.h. ohne einen auf Dependency Injection zugeschnittenen Entwurf und eine Mockbibliothek sind effektive Unittests quasi aussichtslos

    grobgranulare tests auf package/eclipse plugin ebene...
    Äh jap... Eclipse testen soll nicht einfach sein, hab ich mir sagen lassen .

    Gruß
    Ollie
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 07.07.10, 09:55
  2. JUnit Test auf Blockierung
    Von Orthak im Forum Java
    Antworten: 1
    Letzter Beitrag: 16.06.10, 11:27
  3. Spring - JUnit Test
    Von ThirdKeeper im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 3
    Letzter Beitrag: 23.03.09, 09:36
  4. Junit test
    Von lernen.2007 im Forum Java
    Antworten: 1
    Letzter Beitrag: 02.12.06, 01:47
  5. Junit Test
    Von lernen.2007 im Forum Java
    Antworten: 2
    Letzter Beitrag: 30.01.06, 17:57