【问题标题】:TDD a CRUD application complex Database DesignTDD 一个 CRUD 应用复杂的数据库设计
【发布时间】:2017-12-10 11:38:59
【问题描述】:

我们被分配开发一个软件系统。它几乎没有任何业务逻辑,只是简单的 CRUD 操作(以及对某些表单的一些小控件)。 但问题是数据模型已经存在并且与 UI 表单无关。我的意思是每个表单只映射到多个表,或多个表上的多个列。

我相信我们应该根据业务逻辑而不是复杂的遗留数据库设计来设计对象(实体或 DTO)模型。因此,该应用程序保持简单易懂,并将所有复杂性封装在一组数据访问对象后面。

这会导致复杂的 DAO 对象,这是测试的最重要目标。是否可以在没有数据库的情况下为 DAO 对象编写测试?怎么样?

【问题讨论】:

  • 有什么理由不能为此使用简单的单元测试?提供一些模拟实体数据,为 UI 模型数据设定期望。没有什么能阻止你先写测试。
  • 你说的测试不就是集成/功能测试吗?

标签: jakarta-ee tdd dao


【解决方案1】:

我认为你缺少了一层间接性。

DAO 使用针对真实数据存储的集成测试进行测试,因为这些测试会检查 DAO 成功执行这些查询的能力。

因此,缺少的层将是旧模型和新模型之间的转换层。该层可以轻松进行单元测试,并且应该只包含在两者之间转换的纯函数。

这将使 DAO 变得简单且易于测试,并使转换层也更易于测试。

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2016-12-10
    • 2010-11-18
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    相关资源
    最近更新 更多