C# 在内存中填充SQLite以进行单元测试

C# 在内存中填充SQLite以进行单元测试,c#,unit-testing,sqlite,nunit,C#,Unit Testing,Sqlite,Nunit,我正在考虑使用SQLite作为Oracle数据库的内存存根。我可以轻松地将所有DAL命令定向到SQLite,但我现在想知道如何轻松地填充每个测试方法的数据。 每个方法是否应该从创建所需的表和插入特定测试的行开始?我应该在夹具设置阶段填充内存中的数据吗?是否有其他方法(如从某个文件中读取,但放弃更改以便下次读取相同)? 也许我应该用一个普通的存根来存根db,并在需要时返回本地创建的OBEJCT(数据集和数据表)?我曾想过尝试这样做,但这样我就不会测试传递的实际查询,而是尝试对执行SQL选择的方法进

我正在考虑使用SQLite作为Oracle数据库的内存存根。我可以轻松地将所有DAL命令定向到SQLite,但我现在想知道如何轻松地填充每个测试方法的数据。
每个方法是否应该从创建所需的表和插入特定测试的行开始?我应该在夹具设置阶段填充内存中的数据吗?是否有其他方法(如从某个文件中读取,但放弃更改以便下次读取相同)?
也许我应该用一个普通的存根来存根db,并在需要时返回本地创建的OBEJCT(数据集和数据表)?我曾想过尝试这样做,但这样我就不会测试传递的实际查询,而是尝试对执行SQL选择的方法进行单元测试。我还想测试查询的语法和有效性


这方面有什么最佳实践吗?还是好主意?

备份SQLite Db文件怎么样

SQLite的好处是,您可以随时复制整个db文件。您还可以使用SQL文件用数据填充某些db文件。我不完全理解您的问题,但是如果混合使用db文件(作为模板)和(可选)一些SQL文件来根据需要填充表,那么也应该足以解决非常困难的测试问题


通过转储简单文件和(可选)删除不需要的条目或添加其他条目,也可以轻松创建SQL文件。

您认为我应该保留一个包含开始数据的文件,并为每个测试复制该文件,然后用sqlite打开它吗?我担心这会使测试无法读取,因为不清楚为什么某个查询返回一行或另一个特定值。读取器必须始终检查输入文件。这不是一个问题吗?嗨,诺姆,当然这一切都取决于您拥有的测试环境以及您的具体需求。存储一个完整的db文件有助于建立一个复杂的测试环境,而无需在代码中全部实现。当您想让它更具可读性时,还可以每次从转储文件创建db文件。转储文件更具可读性。当你想把所有的东西都写在代码中时,那么它就是这样——你最终会把所有的东西都写在代码中。