java – JUnit和RMI应用程序的最佳实践,RMI Registry

我正在为RMI客户端应用程序编写一组系统集成测试.我想在JUnit 3.8.2中启动RMI服务器,然后运行这些测试.有没有人这样做过?

我在使用main的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测试的最佳方法是什么,因此注册表只启动一次,并且仅在注册表实际启动时才运行测试?我想避免让测试类有一个测试方法,其中包含来自main的所有测试代码,这是我在来到这里之前发现的.

另外,在编写测试时应该注意什么?任何RMI测试都有问题吗?

解决方法:

如果您使用的是JDK 5或更高版本,我建议您升级到JUnit 4.4.注释是一个很好的帮助.

我还建议阅读this.我不明白为什么你要写一个单独的主类来运行测试.这不是TestRunner应该做的吗?

我在设置中启动注册表并在拆解方法中将其关闭.

上一篇:docker入门1--简介、安装


下一篇:java RMI-service中的常见事务逻辑?