在UnitTest中创建测试数据库的麻烦

时间:2013-07-19 15:08:22

标签: c# sql sql-server

我正在为我创建的与数据库交互的一些函数创建单元测试。我有一些设置和拆除代码,我计划在这些单元测试中使用的数据库。现在有趣的部分是这个代码在WinForms,Console,DLL库中正确执行,但是当在单元测试中执行代码时,我在尝试运行ExecuteNonQuery()命令时得到一个有趣的异常。

[Outer Exception]
Exception has been thrown by the target of invocation
[Inner Exception]
The C++ module failed to load during appdomain initialization. \n

在我的异常中进一步挖掘后,我发现了以下内在的异常:

Unable to load DLL 'MSVCR80.dll": The specfiied module could not be found ...  The C++ module fialed to load during appdomain initialization.

查看堆栈跟踪时,您会发现:

"at Microsoft.SqlServer.Management.Common.ExecuteBatch.GetStatements(String sqlCommand)

现在我要承认我在这里有点头脑,所以如果有人能解释为什么在作为UnitTest的一部分执行时抛出这个异常并且修复它的方法会很棒!

private static void ExecSql(string sql, string connectionString)
{
  using (SqlConnection conn = new SqlConnection(connectionString))
  {
    try
    {
      conn.Open();
      Server server = new Server(new ServerConnection(conn));
      server.ConnectionContext.ExecuteNonQuery(sql);
      server.ConnectionContext.Disconnect();
      //MessageBox.Show("Script Executed.");
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
    }
  }
}

0 个答案:

没有答案