6

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

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

+0

从技术上讲,这将是集成测试;) – womp 2009-08-11 22:05:55

+0

@womp:调整... – RSolberg 2009-08-11 22:30:52

+0

我最近一直在想这个。我使用LINQ2SQL,但我想在XML中有一个“参考”数据库。对于测试,我只是用XML自动生成的东西将指向我的文件的SQL自动生成的东西切换出来。测试可以轻松“回滚”(复制/测试/移动)XML文件。我可以对测试数据进行微调,这对于版本控制很容易。不过,我不确定如何让LINQ创建一个匹配的XML框架。我还没有开始询问这方面的可行性或智能。 – 2009-08-11 23:29:32

回答

1

Spring框架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类执行你的测试,然后回滚你的事务。但我没有
试了一下。

瑞安Garaguay具有an interesting article这个它采用TransactionScope和NUnit回滚数据库的变化(虽然他在他的测试代码中使用的SqlCommand和的SQLConnection对象,而不是LINQ)

相关问题