java - 如何使用自定义协议(protocol)测试网络应用程序?

标签 java unit-testing networking tdd integration-testing

我目前正在为学校项目开发两个 Java 网络应用程序。一个通过 TCP,另一个通过 UDP。在这两种情况下,我都必须实现简单的自定义协议(protocol)。

尽管我非常努力地尝试,我找不到正确测试此类应用程序的方法,或者通过测试先行开发更好地开发

如果我有一个客户端,并且我想要真正的测试而不是将所有东西都 stub ,我必须实现具有模拟行为的服务器,对于像这样的简单应用程序,这几乎是整个项目。我明白,当事情变得很大时,编写几行 Perl 脚本来测试它真的很有帮助。

现在我正在同时开发服务器和客户端,这样我至少可以手动测试,但这似乎不是一种干净的开发方式。唯一有帮助的是通过记录器建立隧道连接,这样我就可以看到所有通过的数据(使用 IDEA 的 TunneliJ 插件)。

使用自定义协议(protocol)对网络应用程序进行 TDD 的最佳方法是什么?我是否应该将所有内容 stub 并接受它?

最佳答案

将协议(protocol)与网络层分开。一旦您可以将自己的数据提供给它,而无需通过网络堆栈,测试协议(protocol)的逻辑将变得更加容易。即使您没有使用 Python,我也建议您查看 Twisted 的结构框架。这是一个很好的例子,说明如何对网络应用程序进行单元测试。

关于java - 如何使用自定义协议(protocol)测试网络应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1681413/

相关文章:

JAVA - 将方法返回类型从 void 更改为 String 会立即创建 'dead' 代码?

java - 在Android studio 3.2中查找Sqlite数据库

unit-testing - 我可以使用 Xcode Test Navigator 进行 EarlGrey 测试吗?

Python:模拟的调用计数无法通过多处理并行执行

linux - 如何在ubuntu上使用伯克利数据包过滤器(BPF)

java - 我的 Web 服务是否绑定(bind)了连接?

java - 浏览器后退按钮进入 Spring MVC Controller 的 GET 方法而不是检查缓存

java - 使用 Powermock 时出现 NoClassDefFoundError

networking - RPC语义的确切目的是什么

python - 如何在 Python 中创建可在 Microsoft Access 中链接的 Web 服务?