如何单元测试客户端服务器代码

Sta*_*cBR 24 java testing junit maven-2

我目前正在编写Java客户端服务器应用程序.所以我想实现两个库,一个用于客户端,一个用于服务器.客户端服务器通信有一个非常严格的协议,我不想用JUnit测试.

作为构建工具我使用Maven和Husdon Server进行持续集成.

实际上我没有任何好主意如何测试这些客户端/服务器库.

我有以下方法:

  1. 只需编写一个虚拟客户端来测试服务器并编写一个虚拟服务器来测试客户端. 缺点:不幸的是,这将导致许多额外的工作.我无法100%确定客户端和服务器可以一起工作,因为我不确定测试是否完全相同.

  2. 编写一个单独的测试项目,将客户端和服务器一起测试.
    缺点:单元测试不属于自己的项目,因此Hudson不会自动运行它们.在其中一个库中更改任何内容的每个人都必须手动运行测试以确保一切正确.此外,我不会收到任何代码覆盖率报告.

有没有比这更好的测试代码方法?也许测试一个Maven多模块项目,或类似的东西.

我希望任何人都能找到一个很好的解决方案.

谢谢.

Aar*_*lla 11

将您的所有代码视为"将输入转换为输出": X -> [A] -> Y

X是进入的数据,[A]是变压器,Y是输出.在您的情况下,您有这个设置:

[Client] -> X -> [Server] -> Y -> [Client]
Run Code Online (Sandbox Code Playgroud)

所以单元测试工作如下:

  1. 您需要运行客户端代码才能生成的测试X.验证代码实际上是否X带有断言.X应该是final static String代码中的一个.

  2. X在第二个测试中使用常量来调用将其转换为Y(另一个常量)的服务器代码.

  3. 第三个测试确保客户端代码可以解析输入 Y

这样,您可以保持测试独立,并且仍然确保重要部分工作:组件之间的接口.

  • 嗯两个项目,因为客户端必须转到低资源设备.测试项目是我已经列出的第二种方法.我还写了这种方法的缺点. (2认同)

Sta*_*cBR 2

因此,最终的解决方案是构建一个多模块项目,其中包含一个单独的测试模块,其中包括服务器和客户端模块,在 Husdon 中运行良好。在 Eclipse IDE 中甚至更好。感谢@Aaron 的提示