JUnit 和 RMI 应用程序的最佳实践,RMI 注册表

Posted

技术标签:

【中文标题】JUnit 和 RMI 应用程序的最佳实践,RMI 注册表【英文标题】:Best practicies for JUnit and RMI Apps, RMI Registry 【发布时间】:2009-01-09 16:04:51 【问题描述】:

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

我在 pojo 中使用类似这样的东西:

导入 java.rmi.registry.*; …… //设置 尝试 java.rmi.registry.LocateRegistry.createRegistry(1099); System.out.println("RMI 注册准备就绪。"); this.StartMyServer(); // 客户端设置 我的客户 m = null; m = (MyClient) Naming.lookup("//MyHost/MyServer", m); // 这里测试 赶上(MyClientException 我) System.out.println("MyClient 跌倒去繁荣"); 捕捉(MyServerException 我) System.out.println("MyServer 跌倒去繁荣"); 捕捉(异常 e) System.out.println("异常启动 RMI 注册表:");

将其转换为 junit 测试的最佳方法是什么,以便注册表仅启动一次并且仅在注册表实际启动时才运行测试?我想避免使用一种测试方法的测试类,其中包含来自 main 的所有测试代码,这是我在来到这里之前发现自己正在做的事情。

另外,在编写测试时我应该注意什么?任何 RMI 测试陷阱?

【问题讨论】:

【参考方案1】:

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

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

我会在设置中启动注册表并在拆卸方法中将其关闭。

【讨论】:

main 不是我写的,是之前的开发者写的。这是我要移植到 junit 的手动“烟雾测试”

以上是关于JUnit 和 RMI 应用程序的最佳实践,RMI 注册表的主要内容,如果未能解决你的问题,请参考以下文章

涨薪 20k!华为内部分享的 Java RMI 笔记爆火 Github,原理实践双飞

请问java RMI的意义? [关闭]

Java的RMI远程方法调用实现和应用

RMI 服务器如何响应多个 RMI 客户端调用?

回调中的 RMI 连接失败检测

远程方法调用(RMI)原理与示例