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 に答える