c# – 如何在EF4中回滚单元测试TearDown?

在我关于在EF4中回滚交易的研究中,似乎每个人都提到了 this blog post或提供了类似的解释.在我的场景中,我想在单元测试场景中执行此操作,我想在我的单元测试上下文中回滚几乎我所做的一切,以防止更新数据库中的数据(是的,我们会增加计数器但是没关系).为了做到这一点,最好遵循以下计划吗?我错过了一些概念或其他任何重要的概念(除了我的SetupMyTest和PerformMyTest函数不会真的存在这种方式)?
[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
  }
}

解决方法

我们使用TransactionScope.
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();
    }

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

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...