6

您如何通过在实现中使用 LINQ 2 SQL 的域层/模型(存储库)对数据库进行集成测试,并让数据库保持原样?换句话说,在对 DB 进行单元测试的理想世界中,集成测试将按照它找到的方式离开 DB。

有没有工具可以自动处理这个问题?通过存储库对数据库执行集成测试的最佳实践是什么?

4

1 回答 1

1

Spring 框架在使用 NUnit 时为集成测试提供支持。NUnit 类位于程序集 Spring.Testing.NUnit.dll 中。其中有一些执行事务管理的类。这些类为每个测试创建和回滚数据库事务。您只需编写可以假设事务存在的代码。

这是否真的适用于 Linq to SQL 是另一回事。Spring 说这适用于 ORM。SQL Server 2008 允许您嵌套事务,因此理论上您可以启动一个事务,通过 Linq to SQL 类执行您的测试,然后回滚您的事务。但我还没有
尝试过。

Ryan Garaguay 有一篇关于此的有趣文章,它使用TransactionScope和 NUnit 回滚数据库更改(尽管他在测试代码中使用 SQLCommand 和 SQLConnection 对象,而不是 Linq)

于 2009-08-11T22:33:45.893 回答