首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单元测试TearDown的EF4中回滚?

如何在单元测试TearDown的EF4中回滚?
EN

Stack Overflow用户
提问于 2010-04-22 04:50:09
回答 1查看 2.5K关注 0票数 6

在我关于在EF4中回滚事务的研究中,似乎每个人都提到了this blog post或提供了类似的解释。在我的场景中,我想在单元测试场景中这样做,我想回滚我在单元测试上下文中所做的几乎所有事情,以防止更新数据库中的数据(是的,我们会增加计数器,但这没问题)。为了做到这一点,最好遵循以下计划?我是不是遗漏了一些概念或其他主要的东西(除了我的SetupMyTestPerformMyTest函数不会真正以这种方式存在)?

代码语言:javascript
复制
[TestMethod]
public void Foo
{
  using (var ts = new TransactionScope())
  {
    // Arrange
    SetupMyTest(context);

    // Act
    PerformMyTest(context);
    var numberOfChanges = context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
    // if there's an issue, chances are that an exception has been thrown by now.

    // Assert
    Assert.IsTrue(numberOfChanges > 0, "Failed to _____");

    // transaction will rollback because we do not ever call Complete on it
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-22 04:55:05

为此,我们使用TransactionScope。

代码语言:javascript
复制
    private TransactionScope transScope;

    #region Additional test attributes
    //
    // Use TestInitialize to run code before running each test 
    [TestInitialize()]
    public void MyTestInitialize()
    {
        transScope = new TransactionScope();
    }

    // Use TestCleanup to run code after each test has run
    [TestCleanup()]
    public void MyTestCleanup()
    {
        transScope.Dispose();
    }

这将回滚在任何测试中所做的任何更改。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2686454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档