如何测试服务器客户端(Java/Maven)

如何测试服务器客户端(Java/Maven),java,maven,testing,client-server,Java,Maven,Testing,Client Server,我有一个简单的游戏,它由两个项目组成:客户端和服务器。现在我想测试它们是否正确交互。 设置为:一个Maven父项目,服务器/客户端作为子模块 我现在不知道如何测试交互:我是否能够在junit测试或集成测试中以某种方式启动这两个项目(具体如何?)?这样我就可以监听一个项目的输出,验证它并将它发送给另一个项目?或者我应该换一种方式吗?通常从测试启动服务器,并从测试发送请求,模拟客户端行为,检查服务器响应是否符合预期。对于集成测试,创建单独的pom,将两个项目添加为测试依赖项。然后在测试开始之前使用t

我有一个简单的游戏,它由两个项目组成:客户端和服务器。现在我想测试它们是否正确交互。
设置为:一个Maven父项目,服务器/客户端作为子模块


我现在不知道如何测试交互:我是否能够在junit测试或集成测试中以某种方式启动这两个项目(具体如何?)?这样我就可以监听一个项目的输出,验证它并将它发送给另一个项目?或者我应该换一种方式吗?

通常从测试启动服务器,并从测试发送请求,模拟客户端行为,检查服务器响应是否符合预期。

对于集成测试,创建单独的pom,将两个项目添加为测试依赖项。然后在测试开始之前使用testng beforeclass钩子或maven failsafe插件钩子启动服务器,并在测试结束后关闭服务器。

这听起来是集成测试的好例子。我会这样做:

  • 创建第三个名为IntegrationTests的maven模块
  • 使用maven概要文件
    integrationtests
    并使用-dinintegrationtests激活它
  • 将客户端和服务器模块作为依赖项拉入新模块
  • 使用JUnit编写集成测试(@Before、@Test等)
正如Evgeniy所建议的,您当然可以将集成测试放在现有模块中的一个模块中,而我的建议是将其拆分为第三个模块

如果您需要关于如何使用maven概要文件进行集成测试的帮助,只需在google上搜索一下,或者如果您有具体问题,请随时询问


祝你好运。

Thx,我遵循了它,但它只是用一个服务器插件描述的。我如何开始我自己的?你正在读关于
maven故障保护插件的文章。要使用它或任何其他插件,只需在pom.xml中的
下配置它,然后构建maven项目(
clean install
)。我自己,我只是使用
maven-surefire插件
,因为当测试中断时它会失败。无论哪种方式,都可以通过
-dinintegrationtests
指定是否运行集成测试。