如何通过在实现中使用LINQ 2 SQL的域层/模型(存储库)对数据库进行集成测试,并在发现数据库时保留数据库?换句话说,对DB进行单元测试的理想世界,集成测试会在发现它时留下数据库。
那里有哪些工具可以自动处理?通过存储库对数据库执行集成测试的最佳实践是什么?
答案 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)