[英]MySql queries slow after dropping database with .NET
我似乎對.NET中的MySql連接器有問題。
我正在數據庫接口后端進行單元測試。 測試的一部分是刪除數據庫,以便可以將整個數據庫重新初始化為默認設置。 這是我的測試通常的樣子:
放置代碼很簡單:
string connStr = System.Configuration.ConfigurationManager.ConnectionStrings[APPCONFIG_SCHEMA_CONNECTION_NAME].ConnectionString;
using (MySqlConnection conn = new MySqlConnection(connStr))
using (MySqlCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "DROP DATABASE IF EXISTS securitydata;";
cmd.ExecuteNonQuery();
}
如果我使用工作台手動刪除數據庫並通過注釋掉刪除來修改測試,則測試的速度實際上比它們快50倍:
所有這些都使用NuGet.org上可用的NuGet包中的MySql Connector / NET。 我已經在運行MySql 5.6.24的開發(本地)計算機以及最終使用MySql 5.5.41的生產計算機上對此進行了測試。
我想通了,以防有人碰上同樣的東西。 這是我進行TestInitialize的方式:
[TestInitialize]
public void InitializeTest(TestContext c)
{
#if DEBUG
SecurityDatabase.DropDatabase();
#endif
_database = new SecurityDatabase();
}
對我來說這是一個誤會。 對於每個測試 , 都會運行TestInitialize
,而在建立測試類時,不會運行一次。 我忘記了ClassInitialize
屬性,該屬性每個TestClass
運行一次。 修改后的代碼是:
[ClassInitialize]
public static void InitializeClass(TestContext c)
{
#if DEBUG
SecurityDatabase.DropDatabase();
#endif
}
[TestInitialize]
public void InitializeTest()
{
_database = new SecurityDatabase();
}
現在測試正常運行,並且由於每個測試集僅刪除一次數據庫,因此在我的一些測試案例中暴露了一些問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.