0

我基本上是通过构建客户端和服务器(不一定是 HTTP 服务器)来练习 Java 套接字编程。简而言之,客户端通过套接字向服务器发送请求,服务器将请求添加到任务队列。线程池最初有一定数量的线程,每个空闲的线程都分配给任务队列中的一个可运行任务。我的 Web 服务器也有一个简单的存储,用于存储和从磁盘中的文件中检索数据。在这个项目中,我必须处理几个并发问题。

基本上,我必须构建客户端、服务器、线程池、处理程序、存储。但是,我想以一种良好的系统方式进行彻底的测试(单元测试、集成测试等)。我在测试方面没有太多经验,所以我正在寻找指针、方法、框架或教程。(我使用 Ant 进行自动化构建,最初考虑使用 JUnit 和 EasyMock 进行测试)

建筑学

4

1 回答 1

0

在测试之前,我会先编写一些粗略且现成的原型代码。只是为了看看它的工作情况并感受一下我将使用的 API。

然后介绍一些使用 JUnit 的单元测试(还有其他框架,但 JUnit 无处不在,您会发现很多教程可以帮助您入门)。

如果您的对象需要与其他一些对象交互以完成其任务,则使用模拟(EasyMock 或其他)来提供交互 - 这可能会导致一些重构。

一旦你满意了,你就可以开始测试你的对象是如何交互的,你可以编写新的(集成)测试来用真实的东西代替 Mocks。更大的交互导致更大的复杂性。

有些事情要记住

  • 琐碎的方法不值得测试(例如简单的访问器)
  • 100% 覆盖是浪费时间
  • 任何测试都比没有好
  • 单元测试比集成测试更容易实现
  • 并非所有测试都有效
  • 测试多线程应用程序很困难

有一本书介绍了 Google 如何进行测试。基本上,他们在看起来可行之前不会编写测试。他们有工程师就如何构建测试代码提供建议。重点是:

  • 可运行的代码是目标
  • 测试增加了这个目标,但不要取代它
  • 编写可测试的代码是一项学习技能
于 2012-11-03T06:09:13.760 回答