2011-11-10 47 views
0

A控制器包括两个主要部分:设计花样来测试RESTful服务

  • 映射的URL
  • 代码里面方法

当编写一个测试案例有两个部分进行测试。

  • 测试的URL和映射
  • 测试函数内部的代码映射

后,采用经典的测试情况下,使用HttpServletResponse的模拟等,采用RESTtemplates(而不是使用curl)是相当大的东西使用。

问题是:使用哪一个,如何使用它们,如何合并它们,是否需要在逻辑上区分两个测试部件?

什么样的模式用于测试RESTful服务。

回答

1

首先:

  • 良好的测试发现漏洞。 (测试必须现在找不到一个错误,他们也是很好的测试时,他们发现一个bug在furure一些地方,而任何人的任何更改。)
  • 坏测试中没有发现错误。 ()如果一次测试永远不会失败,那么整个项目开发或维护的时间都是无效的,那么测试就没用了。
  • 测试从来没有证明没有错误!

所以,当我写的测试中,我试着写他们尽可能地简单,但也尝试测试我相信,我可以去错了每一件事情。

因此,例如,您的REST类型的服务:

当然也有可能是在逻辑许多错误,所以一个需要写很多他们的测试。但是这个测试可以直接调用该方法,并使其相对容易编写测试。通过一些HTTP调用来调用方法的更简单。

但是当然在HTTP调用中可能会出现错误,因此必须进行测试。但是因为我已经用我的正常单元测试测试了“代码”。我只需要很少那么难编写测试。这个测试更关注可以通过错误的映射或错误的服务来完成的错误。

所以在最后:使用所有类型的,你可以写测试(单元测试,嘲笑的东西,HttpUnit的测试,硒,...)。但首先想想你想测试的问题。并且选择那种可以编写和维护测试用例的测试。


顺便说一句@see RestFuse - JUnit扩展

+0

感谢您的答案和投票了。当我编写测试代码时,是否应该将我在问题中解释的两种测试分开?我的意思是在不同的班级以不同的方式。我只是想要有一个好的设计模式。 – kamaci

+0

@kamaci:是的,你应该在单独的类中做(也可以在不同的根源目录中)。不同类的原因是,这两种类型通常需要完全不同的测试设置和不同的测试运行器。不同根目录的原因是,这允许你(如果你使用eclipse)分别运行每种类型。这可能很重要,因为您通常只想在开发过程中运行快速测试(实际单元和模拟测试)。并且如果每件事都完成,只想运行所有测试(快速和慢速)一次。 – Ralph

+0

谢谢,这对测试REST架构代码来说是一个很好的头脑。 – kamaci