2013-07-07 54 views
2

這裏sqlite的單元測試是我的代碼:在vs2012 C#

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邏輯錯誤或丟失的數據庫沒有這樣的表:

+1

那麼它說「沒有這樣的桌子」,這是真的嗎?如果是的話,那麼你有它。如果不是,你有什麼數據庫? (還有:爲什麼是一個圖像?)。 – Theraot

+0

你可以將你的代碼發佈爲文本而不是屏幕截圖嗎? – tacaswell

+0

我確信用戶表在那裏,我沒有單元測試運行成功。 – user1434702

回答

1

嘗試使用DeploymentItemAttribute確保數據庫文件本身與測試一起部署。

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

(請注意,請勿使用代碼圖片,因爲它在回答時無法複製/粘貼)。

+0

我很抱歉。我嘗試用CTRL + K過去代碼,但它沒有顯示出相關性。 – user1434702

+0

謝謝,我這樣做,但仍然錯誤。 – user1434702

+0

@ user1434702 - 確保數據庫的構建類型是「Content」,並且「Copy to Output」被設置爲「Copy if newer」 – keyboardP

0

什麼單元測試框架,您使用的用戶?

可能test.db不會被複制到您的代碼在您的測試框架下運行的位置。

編輯:看屬性它可能是MSTest。我從來沒有使用它,但MSTest有一些稱爲部署項目。您必須定義作爲測試一部分的外部文件(這裏是test.db)。

+0

單元測試框架內置於VS. – user1434702