如何使用LINQ2SQL通过存储库在DB上运行集成测试?

时间:2009-08-11 22:00:13

标签: sql asp.net-mvc unit-testing linq-to-sql integration-testing

如何通过在实现中使用LINQ 2 SQL的域层/模型(存储库)对数据库进行集成测试,并在发现数据库时保留数据库?换句话说,对DB进行单元测试的理想世界,集成测试会在发现它时留下数据库。

那里有哪些工具可以自动处理?通过存储库对数据库执行集成测试的最佳实践是什么?

1 个答案:

答案 0 :(得分:1)

Spring Framework provides support for integration testing when using NUnit。 NUnit类位于程序集Spring.Testing.NUnit.dll中。有一些classes that perform transaction management。这些类为每个测试创建并回滚数据库事务。您只需编写可以假定存在事务的代码。

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

Ryan Garaguay有an interesting article关于此问题,它使用TransactionScope和NUnit来回滚数据库更改(尽管他在测试代码中使用了SQLCommand和SQLConnection对象,而不是Linq)