集成测试数据访问代码 SQL



我有一个名为数据库的类,它实现了以下接口;

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

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

我需要为这个类编写集成测试,到目前为止,我已经为 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
           };
       };
    }
}

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

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

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

最新更新