我如何用Java测试Web服务器?

时间:2012-11-03 05:16:16

标签: java unit-testing testing tdd webserver

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

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

architecture

1 个答案:

答案 0 :(得分:0)

在测试之前,我首先编写一些粗略的,准备好的prototpye代码。只是为了看到它的工作,并了解我将使用的API。

然后用JUnit介绍一些单元测试(还有其他框架,但JUnit无处不在,你会找到很多教程来帮助你入门)。

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

一旦你开心,你就可以开始考虑测试你的对象如何交互,你可以编写新的(集成)测试,用真实的东西取代Mocks。更大的互动会带来更大的复杂性。

要记住的一些事情

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

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

  • 可运行代码是目标
  • 测试会添加到该目标,但不会替换它
  • 编写可以测试的代码是一种学习技能