测试驱动开发 - Spring应用程序

时间:2013-10-11 16:19:07

标签: java spring unit-testing tdd

我正在开发REST API。我已经进行了Jmeter测试以进行功能测试。我想添加单元测试,并且还希望从现在开始遵循测试驱动开发(TDD)来进行任何增强并为我现有的项目添加新功能(这必然会变得非常复杂并且没有任何单元测试)

在阅读了很多关于TDD之后,我对是否应该选择TDD感到困惑。对它有极端的看法。

我想我会跟踪TDD只是为了开发我的服务层,它只包含业务逻辑。

有关我的方法的任何建议吗?

3 个答案:

答案 0 :(得分:2)

TDD不止于此。它不仅是一种检查系统外部是否正常工作的方法。 TDD也是加速课程开发的一种手段,即使它们不与其他系统交互也是如此。

将测试视为对以下问题的回答:

  1. 我是否完成了这门课程的开发?
  2. 我已经开发并测试过的课程在我做出改变后仍能正常工作吗?
  3. 如何将需求表示为源代码?
  4. 关于每个问题的解释:

    1. 你怎么知道你写完课?测试可以告诉您,只有在课程完成应该完成的所有操作后才显示测试成功的消息。
    2. 您需要测试自动化才能经常进行测试。
    3. 每当您有新要求时,请编写代表此要求的新测试。

答案 1 :(得分:1)

TDD是您在开发之前测试的最佳实践之一。如果您破坏了以前的任何功能,那么在开发应用程序/服务的过程中,您会知道每一步。

你走在正确的道路上,我总是鼓励使用TDD。如果您正在从头开始研究项目,那就去吧。

由于您的项目是现有项目,因此您可能会头疼,直到您为所有现有功能覆盖单元测试用例。

所以最好的方法是:

  • 在开始开发新功能之前,记下现有功能的所有单元测试用例。
  • 在这样做的同时,您可能会遇到很多惊喜,最终可能会重新分解很多代码。这将有助于您开发未来的新功能。
  • 现在,由于您的代码看起来好多了,您可以为新功能启动TDD。

如果这有帮助,请告诉我。我在很多项目中都使用过TDD,我很满意。

答案 2 :(得分:1)

由于您使用的是Spring,我建议单元测试的对象不应该是Web服务。我会把它变成一个基于接口的POJO。部署为REST的选择不应影响该行为。

对POJO使用的HTTP请求和对象的消息进行封送和解组可以是单独的。

这种安排的另一个好处是不需要部署到容器中进行测试。