2009-01-09 75 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