在 SSDT (VS2019) 的 SQL Server 数据库项目中,我有一个单元测试项目。它里面是一个app.config
文件,它指定了单元测试数据库的设置。
一种设置是:
<DataGeneration ClearDatabase="true" />
这究竟应该做什么?我的假设是它会在运行测试之前清除数据库中的所有数据(即只有一个没有数据的干净模式)。但是,我的测试表明这是不正确的。
我有一个测试,它在该部分中插入 5 条记录,然后Pre-test
检查Row Count
. ResultSet
如果我删除我的测试数据库并运行它,它就会通过。如果我再次运行它,它会失败并出现错误:RowCountCondition Condition (rowCountCondition1) Failed: ResultSet 1 : The 10 row(s) did not match the 5 expected row(s).
。显然,我第一次运行的 5 行插入在第二次运行时没有被清除。我希望ClearDatabase
能做到这一点;删除数据并重新开始。
我意识到我可以TRUNCATE
或钩子DELETE FROM
中的表Pre-Test
来规避这个错误,但我想了解这个 XML 属性,因为它似乎违反直觉。
我在网上查找了文档,我能找到的只是官方的 Microsoft 文档,它描述了我所期望的属性,但不是它的实际行为!