testing - 单元测试。在创建界面之前还是之后?

标签 testing tdd

在我最近的项目中,我和我的团队成员聚集在一起,仔细研究了需求,并一起创建了我们都同意的接口(interface)(带有方法声明,但没有实现)。然后,我们开始编写单元测试,然后是实现。

现在,我的项目负责人说我们的方法是错误的。他说我们应该先创建一个测试,然后再提出接口(interface)。

我们首先提出接口(interface)的原因之一是我们认为必须有一个接口(interface)声明才能创建模拟测试。

哪一个是正确的方法?

最佳答案

测试驱动开发从单元测试开始。

在您的单元测试中,您定义了树阶段:Arrange、Act 和 Assert。此时您的代码将无法编译,因为类/接口(interface)尚未定义。

但是这些步骤确实可以帮助您考虑您的界面。在您的情况下,与其在白板(或其他东西)上与您的同事讨论您需要的接口(interface)和方法,不如编写一组单元测试来勾勒出您需要的类和接口(interface)。

通过以测试先行的方式编写单元测试,您可以强制自己在考虑实现之前查看类的外部。这就是 TDD 的方式。

很快就会在为项目定义所有接口(interface)时考虑模拟。在您的单元测试中,您测试一个类。一个具体的对象。在编写该对象时,您会遇到您的类需要其他对象的情况。那是您开始考虑依赖关系的时刻,这会导致使用接口(interface)和依赖注入(inject)。

关于testing - 单元测试。在创建界面之前还是之后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16238996/

相关文章:

c++ - 在 Visual Studio (TDD) 中构建和运行 C++ 单元测试

c# - 有效的类层次结构?

ruby-on-rails - RSpec: Controller 规范的多个断言

reactjs - 将 enzyme.mount().setProps 与 react-redux Provider 一起使用

multithreading - TDD 测试重构以支持多线程

c# - 在构造函数中访问数组

javascript - 如何使用浅层( enzyme )模拟从渲染方法调用的方法

java - 哪个工具用于识别该方法是否有测试用例?

javascript - 我应该明确等待元素在 Protractor 测试中可见吗?

ruby-on-rails - rails 4 : Factory Girl & Rspec with associated Model