代码之家  ›  专栏  ›  技术社区  ›  Mark Brittingham

您是否应该对主要由查询组成的业务逻辑方法进行单元测试?

  •  3
  • Mark Brittingham  · 技术社区  · 15 年前

    我有一个业务逻辑层,其中包含广泛的类及其相应的方法。为方法创建单元测试通常是给定的,但在某些情况下,该方法实际上只是从数据库返回一组匹配的记录。编写单元测试似乎有点愚蠢,比如存储五条匹配的记录,然后调用BLL方法,看看它是否返回所有五条记录。

    这里的最佳实践是什么?你到底想干什么 -与你想说的相反,你理想的做法是什么?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Justin Niessner    15 年前

    我相信这里真正的问题是,为什么您的业务逻辑层中的方法似乎不包含任何真正的业务逻辑?

    在本例中,所讨论的方法似乎只是一种存储库样式的方法,用于从数据库中检索符合某些条件的记录。

    在这两种情况下,我仍然会对该方法进行单元测试。有几个原因:

    1. 由于该方法位于业务逻辑层(在您的案例中),因此该方法最终可能会变得更加复杂。现在添加单元测试将确保即使在将来,无论逻辑如何,该方法仍然会得到意外行为的测试。

    2. 如果有任何逻辑(比如确定哪些记录符合业务标准),您仍然需要测试该逻辑。

    3. 如果最终将该方法移动到数据层,则应针对某个模拟数据存储库测试查询,以确保查询工作正常。这样,如果您的查询在将来变得更复杂,那么您将被覆盖。

        2
  •  0
  •   pkaeding    15 年前

    DBUnit 要在数据库中填充多条记录,查询应返回多条记录。然后,调用该方法,并确保只返回正确的记录。这可以确保查询逻辑正常工作,并有助于在将来重构数据库时发现回归问题。

    推荐文章