[英]How to Perform Unit testing for Serialization and Deserialization of a class in C#?
[英]How to perform unit testing for a particular function in c# desktop application?
我有一個名為LoadCitation的函數。
public void LoadCitation()
{
cmd = new SqlCommand("select * from tbl_Users where isLogin=1", con);
sqlDataAdapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sqlDataAdapter.Fill(ds);
String username = ds.Tables[0].Rows[0]["username"].ToString();
sqlDataAdapter = new SqlDataAdapter("select id,title,author1_fname,author1_lname,author2_fname,author2_lname,author3_fname,author3_lname,doctype,year,publisher,abstract,nameofdoc,issue,volume,pgno,url,accessdate,notes,tag from tbl_Citation where username ='" + username + "'", con);
DataSet = new DataSet();
con.Open();
sqlDataAdapter.Fill(DataSet, "tbl_Citation");
con.Close();
dgeviewcitation.DataSource = DataSet;
dgeviewcitation.DataMember = "tbl_Citation";
}
我想為此方法執行單元測試。
[TestClass()]
public class EditcitationTests
{
[TestMethod()]
public void LoadCitationTest()
{
}
}
我已經創建了方法,但不知道該在函數內部編寫什么以進行單元測試...
如所寫,此方法不可單元測試。
那是因為它對外部資源有嚴格的依賴性。 如果測試在沒有設置數據庫的環境中運行怎么辦? 您如何知道數據庫中將包含哪些數據? 單元測試永遠都不應離開其類(以及任何模擬)。
因此,首先,您需要將該SQL放入注入到表單的服務中(還可以解決SQL注入漏洞!)。 然后,您的測試將模擬該服務(使用NSubstitute
或Moq
類的東西),並且您可以驗證模擬返回的數據是否正確存儲在dgeviewcitation
。
請注意,UI通常是單元測試的糟糕選擇,正確的方法是將UI置於實際邏輯上非常薄(盡可能薄)的層上,然后對邏輯進行單元測試。 諸如MVVM之類的架構模式試圖對此提供幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.