代码之家  ›  专栏  ›  技术社区  ›  Kyle Vassella

为集成测试创建LocalDB测试数据库

  •  0
  • Kyle Vassella  · 技术社区  · 6 年前

    this thread 寻求帮助。

    我正在实施 NUnit .NET Web API 2 项目。我们使用 Entity Framework code-first from database Entity 我们没有单独的数据访问层项目,也没有 Migrations

    我有我的主 api 项目,以及 apiIntegrationTests 我的目标是让我的IntegrationTests项目使用一个LocalDB数据库(使用dev数据库中的数据填充),独立于我们的开发数据库。

    API集成测试 项目,我已经设置了一个连接字符串 App.config 对于LocalDb实例:

    <add name ="TestDatabase" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Database=TestDatabase;Integrated Security=True"/>
    

    我创建了一个基类,希望每次 集成测试已运行。这可能有错误:

    测试设置.cs

    using NUnit.Framework;
    using System.Data.Entity;
    using System.Transactions;
    
        namespace api.IntegrationTests
        {
            public class TestSetup
            {
                // What is this?
                protected MyDbContext DbContext;
    
                protected TransactionScope TransactionScope;
    
                // Maps to connection string in App.config
                public const string TestDatabaseName = "TestDatabase";
    
                [SetUp]
                public void SetUp()
                {
                    // Create the database if it doesn't exist
                    DbContext = new MyDbContext(TestDatabaseName);
                    DbContext.Database.CreateIfNotExists();
    
                    TransactionScope = new TransactionScope(TransactionScopeOption.RequiresNew);
                }
    
                [TearDown]
                public void TearDown()
                {
                    if (TransactionScope != null)
                        TransactionScope.Dispose();
                }
            }
        }
    

    我在创建 MyDbContext MyDbContext 是应该做的。

    我的目标是 MyDbContext.cs , 我想 ,来填充我的集成测试LocalDB实例 DbSet 应用程序编程接口 正确还是错误?

    谁能告诉我一些情况吗?我不确定用dev-db中的所有数据填充集成测试数据库是否是一个好主意,因为它是一个相当大的数据库。我希望我能具体说明 一些 对于dev db中的表,然后为以后的开发测试找到更好的解决方案(内存托管?)。现在如果我能成功地创造这个我会很高兴 LocalDb 测试数据库并用dev-db中的实际数据填充它。

    0 回复  |  直到 6 年前