您应该单元测试主要由查询组成的业务逻辑方法吗?

时间:2010-01-20 22:41:31

标签: unit-testing business-logic

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

这里的最佳做法是什么?你实际上做了什么 - 而不是你想说的理想情况呢?

2 个答案:

答案 0 :(得分:4)

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

在这种情况下,似乎所讨论的方法只是一个Repository样式方法,用于从数据库中检索与某些条件匹配的记录。

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

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

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

  3. 如果最终将方法移动到数据层,则应该针对某些模拟数据存储库测试查询,以确保查询有效。这样,如果您的查询将来变得更加复杂......您就会受到保护。

答案 1 :(得分:0)

我使用DBUnit用大量记录填充数据库,超过查询返回的记录。然后,调用该方法,并确保只返回正确的记录。这可确保您的查询逻辑正常工作,并有助于在将来重构数据库时捕获回归问题。