【发布时间】:2013-05-15 12:46:56
【问题描述】:
我有一个简单的游戏,它由两个项目组成:客户端和服务器。现在我想测试它们是否正确交互。
设置是:一个 Maven 父项目,服务器/客户端作为子模块。
我现在不知道如何测试交互:我是否能够在 junit 测试或集成测试中以某种方式(究竟如何?)启动这两个项目?这样我就可以收听一个项目的输出,验证它并将其发送给另一个?还是我应该走另一条路?
【问题讨论】:
标签: java maven testing client-server
我有一个简单的游戏,它由两个项目组成:客户端和服务器。现在我想测试它们是否正确交互。
设置是:一个 Maven 父项目,服务器/客户端作为子模块。
我现在不知道如何测试交互:我是否能够在 junit 测试或集成测试中以某种方式(究竟如何?)启动这两个项目?这样我就可以收听一个项目的输出,验证它并将其发送给另一个?还是我应该走另一条路?
【问题讨论】:
标签: java maven testing client-server
对于集成测试,请创建一个单独的 pom 添加两个项目作为测试依赖项。然后在测试开始前使用 testng beforeclass hooks 或 maven failsafe plugin hook 启动服务端,测试结束后关闭服务端。
【讨论】:
这听起来像是一个集成测试的好案例。我会这样做:
integrationtests 并使用 -Dintegrationtests 激活它正如 Evgeniy 建议的那样,您当然可以将集成测试放在现有模块之一中,而我的建议是将其拆分到第三个模块中。
如果您需要有关如何使用 maven 配置文件进行集成测试的帮助,只需在 Google 上搜索一下,或者随时询问您是否有具体问题。
祝你好运。
【讨论】:
maven-failsafe-plugin 的信息。要使用它或任何其他插件,只需在您的 pom.xml 中的 <build> 和 <plugins> 下配置它,然后构建您的 maven 项目 (clean install)。我自己,我只使用maven-surefire-plugin,因为它会在测试中断时失败。无论哪种方式,很高兴能够使用-Dintegrationtests 指定是否运行集成测试。
通常您从测试启动服务器并从测试发送请求以模拟客户端行为并检查服务器响应是否符合您的预期。
【讨论】: