我是否需要测试void,任何GUI处理程序或网络操作方法?

时间:2014-03-02 17:15:03

标签: java junit

我目前正在开发Java桌面客户端。我的应用程序基于socket,有很多基于网络操作的方法。我需要测试这种方法吗?我怎么测试呢?目前我只设置了一个套接字服务器用于测试。但是这样我必须在测试之前一直运行套接字服务器。

另一个问题是我是否需要测试与GUI操作相关的方法以及如何操作? JUnit可以模拟GUI操作吗?这些方法通常是无效方法。有没有办法测试void方法?

1 个答案:

答案 0 :(得分:1)

这应该是2个不同的问题。我只会解决第一部分:

如果您关心您的程序是否真的有效,那么是的,您绝对应该以某种方式对其进行测试。如果找不到更好的方法,可以使用手动测试。是的,您需要在测试时运行服务器。但是,不进行测试只是意味着您的用户正在为您“测试”它。当他们发现错误时,修复它们比在开发环境中运行时自己找到它们更难。

像JUnit这样的工具很有用,但是如果它们没有按照您的意愿行事,那么 就不会使用来自动化测试。您可以轻松编写自己的测试脚本,从而启动服务器实例,然后通过一系列操作来驱动客户端代码。如果其中一个检查失败,只需抛出异常并使测试脚本崩溃。

既然你提到了JUnit,我猜你在使用Java。如果您决定编写我刚刚描述的测试脚本,请记住您可以使用任何与JVM兼容的语言来执行此操作。

如果您发现与网络相关的集成测试太慢而无法一直运行它们,那么您不必这样做。只需保留该测试脚本,并在您更改可能影响网络相关功能的任何内容时运行它。或者至少在向用户发布新版程序之前运行它。

根据我的经验,通讯和网络是难以发现的错误的丰富来源。有太多的角落案例。如果客户端在请求中途突然断开连接,会发生什么?如果客户太多怎么办?如果邮件在传输中以某种方式损坏怎么办?根据您对可靠性要求的严格程度,您可能需要进行大量的压力测试。