我有一个业务逻辑层,包含广泛的类及其相应的方法。为方法创建单元测试通常是给定的,但在某些情况下,该方法实际上只返回数据库中的一组匹配记录。编写单元测试似乎有点愚蠢,比如存储五个匹配的记录然后调用BLL方法并查看它是否返回所有五个记录。
这里的最佳做法是什么?你实际上做了什么 - 而不是你想说的理想情况呢?
答案 0 :(得分:4)
我认为这里真正的问题是,为什么业务逻辑层中的方法似乎不包含任何真正的业务逻辑?
在这种情况下,似乎所讨论的方法只是一个Repository样式方法,用于从数据库中检索与某些条件匹配的记录。
在任何一种情况下,我仍然会对方法进行单元测试。有几个原因:
由于该方法位于业务逻辑层(在您的情况下),因此该方法最终可能会变得更加复杂。现在添加单元测试将确保即使在将来,无论逻辑如何,该方法仍然会针对意外行为进行测试。
如果有任何逻辑(比如确定哪些记录符合业务标准),您仍然需要测试该逻辑。
如果最终将方法移动到数据层,则应该针对某些模拟数据存储库测试查询,以确保查询有效。这样,如果您的查询将来变得更加复杂......您就会受到保护。
答案 1 :(得分:0)
我使用DBUnit用大量记录填充数据库,超过查询返回的记录。然后,调用该方法,并确保只返回正确的记录。这可确保您的查询逻辑正常工作,并有助于在将来重构数据库时捕获回归问题。