1

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

在阅读了很多关于 TDD 的内容后,我对是否应该选择 TDD 有点困惑。有极端的观点支持和反对它。

我想我只会遵循 TDD 来开发我的服务层,它只包含业务逻辑。

关于我的方法有什么建议吗?

4

3 回答 3

2

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

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

  1. 我完成了这个类的开发吗?
  2. 我已经开发和测试的类在我做出改变后仍然可以正常工作吗?
  3. 如何将需求表示为源代码?

每个问题的解释:

  1. 你怎么知道你写完了一门课?测试可以告诉你,只有在你的班级完成了它应该做的所有事情之后才显示测试成功的消息。
  2. 您需要测试自动化才能经常进行测试。
  3. 每当您有新需求时,请编写一个代表此需求的新测试。
于 2013-10-11T16:31:46.070 回答
1

Since you're using Spring, I'd suggest that the object to unit test should not be a web service. I'd make it an interface-based POJO. The behavior should not be affected by the choice to deploy as REST.

Marshaling and unmarshaling the HTTP request and response to objects for the POJO to consume can be separate.

This arrangement will have the added benefit of not requiring deployment to a container in order to test.

于 2013-10-11T16:53:12.780 回答
1

TDD 是在开发之前进行测试的最佳实践之一。如果您破坏了任何先前的功能,您将知道在开发应用程序/服务的每一步。

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

由于您的项目是一个现有项目,在您涵盖所有现有功能的单元测试用例之前,它可能会让人头疼。

所以最好的方法是:

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

让我知道这是否有帮助。我在很多项目中都使用过 TDD,对此我很满意。

于 2013-10-11T16:43:07.680 回答