3
我想了解更多關於單元測試,使用開箱即用功能(我相信它是MSTest.exe),和微軟假貨(存根和墊片)。微軟在ac#方法中用SQL代碼僞造(墊片和/或存根)
我正在使用Visual Studio 2012 Ultimate和.Net 4.5 Framework。
鑑於下面的代碼調用存儲過程(SQL服務器),它返回一個單一的輸出值(爲簡單起見):
public string GetSomeDatabaseValue()
{
string someValue = String.Empty;
SqlParameter paramater = new SqlParameter();
paramater.ParameterName = "@SomeParameter";
paramater.Direction = ParameterDirection.Output;
paramater.SqlDbType = SqlDbType.NVarChar;
paramater.Size = 50;
try
{
using(SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ConnectionString))
{
using (SqlCommand command = new SqlCommand())
{
command.Connection = connection;
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "SomeStoredProcedure";
command.Parameters.Add(paramater);
connection.Open();
command.ExecuteNonQuery();
if (command.Parameters["@SomeParameter"] != null)
{
someValue= Convert.ToString(command.Parameters["@SomeParameter"].Value);
}
}
}
}
catch(SqlException)
{
throw;
}
return someValue;
}
- 能把它使用墊片和/或存根使得待測試的輸出值可以設置爲一個特定的值?
- 如果是這樣怎麼樣?
- 我是否應該使用單元測試呢?
我已經關注了this tutorial並設法理解並適應了一週中的某一天。
我正在等待VS2012數據庫單元測試功能在2012年底(或恢復)作爲MS員工has commented可用,以便可以對數據庫進行單獨測試。
爲什麼不呢?通過Shimming'command.ExecuteNonQuery();'你可以測試相當多的這種方法和錯誤處理,而不需要訪問數據庫。 – jessehouwing
可能想要填充'connection.Open()'以及。它不會使這個方法易於測試或者其他任何方法,但這是一種開始的方式。 – jessehouwing
方法本身的邏輯很少。這主要是圍繞存儲過程進行的。你可以用Shims測試它嗎?是。測試會有價值嗎?在我看來,沒有。我要麼直接單元測試存儲過程,要麼集成測試包裝器方法作爲代理。 –