我有一个Windows窗体应用程序,它将Access数据库作为存储库。所以我使用OLEDB而不是ADODB。我想编写单元测试来测试我调用DB的方法。原因是我希望能够轻松地测试我的SQL查询。在测试更新,删除和插入时,我的第一个想法是使用Transactionscope。但后来我意识到OLEDB不支持它。我知道我可以使用oledbtransaction,但这需要一个我在测试方法中没有的开放连接。
完成我的crud方法的最佳方法是什么?我不希望测试更改数据库中的数据。
EDIT1) 我想测试数据库调用以确保SQL语句是正确的。我有两个类,一个用于Access(OLEDB),另一个用于SQLServer(ADO),它们具有相同的方法(实现相同的接口)。我这样做是为了能够对SQL Azure和本地Access Db使用该应用程序。 Access和SQL Server始终不使用相同的语法/功能。从测试中测试db代码而不是运行整个应用程序也要容易得多。
我想我可以打开一个连接,但我不想将此连接暴露给我的datalayer类的用户。此外,它是两个不同的连接类。客户端(和测试方法)只能知道类实现的接口。
我还考虑过复制数据库。但由于多个测试需要更新/插入到同一个表中,因此它将获得相当多的副本。这样我需要跟踪更新/插入的内容,因此我不添加重复项并更新已更新的数据。为了避免这种情况,我需要为每个测试方法复制db。