如何从 C# 测试 sql 查询执行? [复制]

Posted

技术标签:

【中文标题】如何从 C# 测试 sql 查询执行? [复制]【英文标题】:How to test an sql query execution from c#? [duplicate] 【发布时间】:2017-06-05 05:30:37 【问题描述】:

我有以下方法:

public async Task SaveToLogAsync(string clientId)

    try
    
        using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
        
            using (var cmd = new SqlCommand())
            
                cmd.Connection = conn;
                cmd.CommandText = @"INSERT INTO TerminalsActivityLog(ClientId, LogTime) VALUES(@clientId, @logTime)";
                cmd.Parameters.Add("@clientId", SqlDbType.VarChar).Value = clientId;
                DateTime dt = DateTime.Now;
                cmd.Parameters.Add("@logTime", SqlDbType.DateTime).Value = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, 0 , 0 , dt.Kind);

                await conn.OpenAsync();
                await cmd.ExecuteNonQueryAsync();
            
        
              
    catch (Exception )
    
    

如何在不保存到数据库的情况下编写单元测试?最好的选择是 EF 的 connectionString 中的 InMemory db。或者我应该保存到数据库然后删除保存的数据?

【问题讨论】:

【参考方案1】:

单元测试会有自己的配置。您可以做的是在单元测试项目的配置中的连接字符串中定义另一个数据库。

在单元测试项目中创建一个 setup 方法,该方法创建该数据库并使用所有必要的结构对其进行设置。然后创建一个删除数据库的清理方法。

【讨论】:

以上是关于如何从 C# 测试 sql 查询执行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 以编程方式复制 MS SQL 2000 数据库?

如何在 C# 中计时执行 SQL 查询?

C# 怎么把从数据库查询出来的东西累加到dataGridView里面去

如何在 C# 中直接执行 SQL 查询?

从 c# 执行写为 .sql 文件(例如:spool.sql)的 oracle spool 命令,就像使用 OracleCommand 执行任何 oracle 查询一样

如何使用 C# 从 SQL 查询中检索参数