实体框架4.1 - 代码优先 - 单元测试数据访问层

时间:2011-08-11 08:51:46

标签: unit-testing entity-framework-4.1 data-access-layer

我是.NET开发人员,我正在为我的数据访问层编写测试。我有使用假存储库的测试 - 我已经通过使用Moq和Ninject来实现。

我正在了解EntityFramework 4.1 Code First模型,我想为CRUD例程创建一个原型。它是一个MVC应用程序,因此我的实体不会被上下文跟踪。

对我而言,编写将对数据库进行更改的测试感觉不对。每次我想运行这些测试时,我都必须清除数据库。这是测试CRUD例程的唯一方法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

如果您不访问数据,您希望如何测试数据访问?是的,应该根据真实数据库测试数据访问。您的问题有一个非常简单的解决方法。在测试结束时进行测试事务和回滚更改。您可以使用这样的基类(NUnit):

[TestFixture]
public abstract class BaseTransactionalTest
{
    private TransactionalScope _scope = null;

    [SetUp]
    public void Initialize()
    {
        _scope = new TransactionalScope(...);        
    }

    [TearDown]
    public void CleanUp()
    {
        if (_scope != null)
        {
            _scope.Dispose();
            _scope = null;
        }
    }
}