2

这是我的代码:

public class Program
{
   static void Main(string[] args)
   {
      exec1();
      Console.WriteLine("completed");
      Console.Read();
   }

   public static void exec1()
   {
      using (IDBConnection conn = new SQLiteConnection("Data Source=test.db"))
      {
         conn.Open();
         IDbCommand command = conn.CreateCommand();
         command.CommandText = "select * from user";
         IDataReader reader = command.ExecuteReader();
         while (reader.Read())
         {
            Console.WriteLine(reader[1]);
         }
      }
   }
}

单元测试:

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
       Program.exec1();
    }
}

它将在调试时运行良好,当我使用测试类运行它时出现错误。

System.Data.SQLite.SQLiteException:SQL 逻辑错误或缺少数据库没有这样的表:用户

4

2 回答 2

1

尝试使用DeploymentItemAttribute确保数据库文件本身与测试一起部署。

[TestMethod]
[DeploymentItem("test.db")] 
public void TestMethod1()
{
   Program.exec1();
}

(旁注,请不要使用您的代码的图像,因为它使得在回答时无法复制/粘贴)。

于 2013-07-07T12:50:50.377 回答
0

你用的是什么单元测试框架?

可能 test.db 没有复制到您的代码在测试框架下运行的位置。

编辑:查看属性可能是 MSTest。我从未使用过它,但 MSTest 有一个叫做部署项的东西。您必须定义作为测试一部分的外部文件(此处为 test.db)。

于 2013-07-07T11:33:52.697 回答