当前位置: 首页 > 编程语言 > C#

执行回滚-存储库集成测试Share

时间:2023-04-10 20:03:39 C#

执行回滚-存储库集成测试问题是测试完成后如何回滚数据库状态。目前,我计划在测试SetUp上启动事务并在测试TearDown上将其回滚。除了手动数据库清理还有其他解决方案吗?我们在使用MSTest时在集成测试中执行此操作。我们使用TransactionScope并在基类中实现测试设置和拆卸。这允许您在事务内运行所有集成测试。基类看起来很像这样:publicclassIntegrationTestsBase{privateTransactionScopescope;[TestInitialize]publicvoidInitialize(){this.scope=newTransactionScope();}[TestCleanup]publicvoidTestCleanup(){this.scope.Dispose();}}祝你好运。我认为你在正确的轨道上......这是一个与LinqToSQL相同的示例,你可以自己调整它。此链接描述了三个选项:该帖子继续描述最快的事务与单个会话相关联,并且可能会产生一些实际问题/限制。如果可以,请使用……重建数据库很慢,但绝对可行,但使用快照速度很快,并且可以解决事务限制。如果您在自动化测试中需要非常高的性能,请从同一位博主那里尝试。他描述了使用MS分布式事务协调器来消除单个会话的事务约束。在TearDown中安装和处置时打开TransactionScope的问题是您没有测试提交!这可能是最简单的方法,另一种方法是在SetUp中重建数据库。最好的方法是事务方法。我提供的链接包含一个简短的演练。我接触过的几乎每个企业解决方案都使用基于事务的方法。请务必查看文章底部的链接,以获取指向Microsoft关于实体框架事务的文档的链接。上面列出的其他选项在清理测试事务的简单概念中是矫枉过正的。建立数据库或使用服务器快照对于这个问题来说完全是矫枉过正。TransactionScope甚至不执行事务,导致集成测试无法完成。实现事务这将在每个测试开始前创建一个事务,并在每个测试结束后回滚事务。[TestClass]公共类TransactionTest{受保护的EntitiesV3上下文;受保护的DbContextTransaction事务;[AssemblyInitialize]publicstaticvoidAssemblyStart(TestContexttestContext){RetryDbConfiguration.SuspendExecutionStrategy=true;}[TestInitialize]publicvoidTransactionTestStart(){context=newEntitiesV3();事务=context.Database.BeginTransaction();}[TestCleanup]publicvoidTransactionTestEnd(){transaction.Rollback();交易.Dispose();context.Dispose();}[AssemblyCleanup]publicstaticvoidAssemblyEnd(){RetryDbConfiguration.SuspendExecutionStrategy=false;}}事务回滚/清理方法一览以上就是C#学习教程:ExecutionRollback–RepositoryIntegrationTesting的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: