2009-01-09 7 views
5

Ich möchte eine Reihe von Systemintegrationstests für eine RMI-Client-Anwendung schreiben. Ich möchte den RMI-Server in JUnit 3.8.2 starten und diese Tests dann ausführen. Hat jemand das getan?Beste Praktiken für JUnit und RMI-Anwendungen, RMI-Registrierung

Ich bin mit so etwas wie dies in einem pojo mit Haupt:

 

    import java.rmi.registry.*; 

    .... 

    //setup 
    try { 

     java.rmi.registry.LocateRegistry.createRegistry(1099); 
     System.out.println("RMI registry ready."); 

     this.StartMyServer(); 

     // client set up 

     MyClient m = null; 
     m = (MyClient) Naming.lookup("//MyHost/MyServer", m); 

     // tests here 

    } catch (MyClientException me) { 

     System.out.println("MyClient fall down go boom"); 

    } catch (MyServerException me) { 

     System.out.println("MyServer fall down go boom"); 

    } catch (Exception e) { 

     System.out.println("Exception starting RMI registry:"); 

    } 


Was ist der beste Weg, dies in einen JUnit-Test zu drehen, so dass die Registrierung nur einmal gestartet wird und die Tests nur ausgeführt, wenn die Registrierung läuft eigentlich an? Ich könnte es vermeiden, eine Test-Klasse mit einer Test-Methode mit dem ganzen Test-Code von dort zu haben, was ich selbst gemacht habe, bevor ich hierher gekommen bin.

Auch was sollte ich beachten, wenn ich meine Tests schreibe? Irgendwelche RMI-Testfehler?

Antwort

5

Wenn Sie JDK 5 oder höher verwenden, empfehle ich ein Upgrade auf JUnit 4.4. Anmerkungen sind eine große Hilfe.

Ich würde auch lesen this empfehlen. Ich sehe nicht, warum Sie eine separate Hauptklasse schreiben würden, um Tests durchzuführen. Soll das nicht der TestRunner sein?

Ich würde die Registrierung in einem Setup starten und es in einer Teardown-Methode herunterfahren.

+0

Ich schrieb nicht die wichtigsten, der vorherige Entwickler tat. Es ist ein manueller "Rauchtest", den ich auf Junit portiere – sal