![]() |
1
2
也许您可以使单元测试具有事务性。运行测试,回滚测试,数据库保持不变。 Spring有事务性的单元测试类,使这项工作变得容易。您只需要一个事务管理器。 |
![]() |
2
1
SQL Server Express (我在2005年做过,但在2008年没有尝试过)设置“测试平台”数据库,这些数据库存储为文件。这些可以签入到源代码管理中,然后测试助手类可以(a)将它们复制到临时文件夹中,(b)启用它们,以及(c)连接到它们。要恢复原始状态,请删除临时副本并重复a-c。 |
![]() |
3
1
您可以在测试代码中创建一组数据工厂,这些数据工厂最初在测试运行启动时运行。然后使用事务回滚方法使其保持原始状态。 为了使它更简单,可以对所有测试类进行子类化,并将事务访问器和回滚代码放在其中。回滚代码可以设置为在每个测试方法完成时自动运行。 |
![]() |
4
1
很简单,您的存储库单元测试不是基于存储库的输入测试数据库中发生的广泛影响;这是为了确认对存储库的输入会导致调用具有某个或某个值集的协作者。 您知道,存储库和代码的其余部分一样,应该遵循单一责任原则。基本上,您的职责只有一个职责,那就是将域模型API问题与底层数据访问技术层(通常是ADO.Net,但可以是实体框架或L2S或其他任何形式)联系起来。以ADO.Net调用为例,存储库不应承担作为数据层工厂的责任,而应依赖ADO.Net数据接口(特别是IDbConnection/IDbCommand/IDBCParameter等)中的协作者。只需将IDbConnection作为构造函数参数,并在一天内调用它即可。这意味着您可以针对接口编写存储库单元测试,并提供模拟(或赝品、存根或任何您需要的东西),并确认按顺序提供了所需的方法和预期的输入。请查看我的MS博客,了解这个主题-> http://blogs.msdn.com/b/schlepticons/archive/2010/07/20/unit-testing-repositories-a-rebuttal.aspx 希望这能帮助您在将来的测试和设计中避免犯错误。 顺便说一句:如果你想对数据库进行单元测试,你可以。只需使用VisualStudio数据库测试。它内置于vs中,自VS2005年以来一直存在。这并不是什么新鲜事。但我需要提醒你们,它们需要完全独立的单元测试。 |
![]() |
5
0
如果您的代码相当独立于数据库,那么使用内存中的数据库(如SQLite)进行单元测试(而不是集成测试)将为您带来速度和易用性的好处(您的测试设置将初始化数据库)。 |
![]() |
Stephen L. · 轻量级聚合和存储库 10 年前 |