2009-01-09 76 views
5

我正在爲RMI客戶端應用程序編寫一套系統集成測試。我想在JUnit 3.8.2中啓動RMI服務器,然後運行這些測試。有沒有人做過這個?JUnit和RMI應用程序的最佳實踐,RMI註冊表

我使用這樣的事情在一個POJO與主:

 

    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:"); 

    } 


什麼是變成一個JUnit測試的最好方式,使註冊表啓動只有一次,僅測試運行,如果註冊表實際上啓動了嗎?我想避免讓一個測試類與一個測試方法一起使用,這裏有來自主要測試代碼的所有測試代碼,這是我在來這裏之前發現自己正在做的事情。

另外,在編寫測試時我應該注意什麼?任何RMI測試陷阱?

回答

5

如果您使用的是JDK 5或更高版本,我建議升級到JUnit 4.4。註釋非常有幫助。我也推薦閱讀this。我不明白你爲什麼要寫一個單獨的主類來運行測試。這不就是TestRunner應該做什麼嗎?

我會在安裝程序中啓動註冊表並在拆卸方法中將其關閉。

+0

我沒有寫主要的,先前的開發者。這是一個手動的「煙霧測試」,我正在移植到junit – sal 2009-01-09 22:59:52