Sql 的集成测试数据访问代码

Integration Testing Data Access Code For Sql

我有一个名为 Database 的 class 实现了以下接口 ;

 public interface IDatabase
{
    int ExecuteNonQuery(string command, CommandType commandType, Dictionary<string, object> parameters);
}

顾名思义,ExecuteNonQuery 函数以与提供程序无关的方式执行非查询数据库命令。

我需要为此 class 编写集成测试,到目前为止,我已经为 Sql Server Compact Edition 编写了集成测试并通过了测试。

这是集成测试代码;

public class DatabaseIntegrationTests
{
    private readonly string CurrentDir;
    private readonly string SqlCeDbPath;

    public DatabaseIntegrationTests()
    {
        CurrentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        SqlCeDbPath = CurrentDir + @"\TestDb.sdf";
    }

    [Fact]
    public void ExecuteNonQuery_SqlServerCE_Should_Execute()
    {
        var dbConfFunc = this.InitializeSqlServerCeInstance();
        Database database = new Database(dbConfFunc);
        database.ExecuteNonQuery("CREATE TABLE Test([ID] [bigint] IDENTITY(1,1) NOT NULL,[Message] [nvarchar](255) NULL)",
            CommandType.Text, null);

        var parameters = new Dictionary<string, object>();
        parameters.Add("@message", "Hello World!");
        database.ExecuteNonQuery("INSERT INTO Test(Message) VALUES(@message)",
            CommandType.Text, parameters);

        CleanUpSqlServerCe();
    }
    private void CleanUpSqlServerCe()
    {
        if (File.Exists(SqlCeDbPath))
            File.Delete(SqlCeDbPath);
    }
    private Func<DbConnectionConfiguration> InitializeSqlServerCeInstance()
    {
        string connectionString = "Data Source=" + CurrentDir + @"\ASTest.sdf;Persist Security Info=False";

        CleanUpSqlServerCe();

        SqlCeEngine engine = new SqlCeEngine(connectionString);
        engine.CreateDatabase();

        return () =>
       {
           return new DbConnectionConfiguration()
           {
               DataProvider = "System.Data.SqlServerCe.4.0",
               ConnectionString = connectionString
           };
       };
    }
}

我的问题是,如何为 class 为 MySql 和 Sql 服务器数据库提供商编写集成测试? 为此 class 编写集成测试以针对 MySql 和 Sql 服务器数据库进行测试的最实用方法是什么?

为了测试 MySql ,我使用了 https://github.com/stumpdk/MySql.Server

编辑:请注意,它不支持程序。