如何对数据库逻辑进行单元测试?


12

关于TDD,我仍然遇到一个小问题。

我需要一种方法,该方法将从数据层(linq2SQL)中获取已过滤数据的特定记录集。请注意,我使用的是从DBML生成的linq生成的类。现在的问题是我要为此编写测试。

我是否:

a)首先将记录插入测试中,然后执行方法并测试结果

b)使用数据库中可能存在的数据。不热衷于这种逻辑会导致事情破裂。

c)你有什么建议?

Answers:


7

(a)的变体。

有一个测试数据库或该数据库的小节可用于测试。设置测试时,请具有一个例程,可以根据需要初始化数据库以开始测试(可以根据需要在每次测试之前完成)。这可能包括删除数据,插入数据等。然后运行测试。在拆解阶段,请自己清理。可以根据需要重复多次,而不会破坏实时系统(使用其他任何数据库所需的数据进行测试不是一个好主意)。


1
好答案。我喜欢使用sqlite创建一次性数据库。如果您想测试特定于数据库实现的内容(例如触发器),那是不可能的,但是它确实允许快速,无害的设置/拆卸。
bogeymin

1
@bogeymin-如果需要,您仍然可以设置带有触发器的测试数据库(可以在FixtureSetup期间使用脚本创建整个数据库)
Yaakov Ellis 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.