如何编写以下方法的代码,以便可以在NUnit中进行测试?怎么处理Hashtable?
public DataSet MySampleMethod(int param1, string param2, Hashtable ht)
{
if(ht==null)
{
ht = new Hashtable();
}
ht.Add("testKey","testData");
DataSet ds = new DataSet();
ds.Tables.Add();
ds.Tables[0].Columns.Add("Column1");
ds.Tables[0].Columns.Add("Column2");
ds.Tables[0].Columns.Add("Column3");
DataRow dr = ds.Tables[0].NewRow();
dr["Column1"] = "My column 1";
dr["Column2"] = "My column 2";
dr["Column3"] = "My column 3";
ds.Tables[0].Rows.Add(dr);
DataRow dr1 = ds.Tables[0].NewRow();
dr1["Column1"] = param1.ToString();
dr1["Column2"] = param2;
dr1["Column3"] = ht["testKey"].ToString();
ds.Tables[0].Rows.Add(dr1);
return ds;
}
Run Code Online (Sandbox Code Playgroud)
首先要问的问题是:为什么我需要编写这种方法?它为我做了什么?
为该方法提供一个更人性化的名称.从我所看到的,该方法接受一个整数,一个字符串和一个哈希表.然后期望该方法返回包含具有3列的孤立表的数据集,
测试此方法应该是微不足道的,测试#1:
测试#2:与上面的测试类似,不同的是你为hashtable参数传入null.
根据您发布的代码片段,我可以看到这一切.HTH
更新:不确定你的意思是"处理哈希表"或"写哈希表的测试夹具代码"?哈希表只是你函数的一个参数..所以我认为测试会看起来像这样(原谅错误的命名和缺少常量......除非我知道这个功能在现实生活中用于什么,否则不能命名它们)
[Test]
public void Test_NeedsABetterName()
{
int intVal = 101; string stringVal = "MyString"; string expectedHashValue = "expectedValue";
Hashtable ht = new Hashtable();
ht.Add("testKey", expectedHashValue);
Dataset ds = MySampleMethod(intVal, stringVal, ht);
Assert.AreEqual(1, ds.Tables.Count);
Assert.AreEqual(2, ds.Tables[0].Rows.Count);
// check header Row1.. similar to Row2 as shown below
DataRow row2 = ds.Tables[0].Rows[1];
Assert.AreEqual(intVal.ToString(), row2["Column1"]);
Assert.AreEqual(stringVal, row2["Column2"]);
Assert.AreEqual(expectedHashValue, row2["Column3"])
}
Run Code Online (Sandbox Code Playgroud)
我建议你在C#中使用NUnit或者从列表中获取一本像Pragmatic Unit Testing这样的好书,以加快你的速度.
| 归档时间: |
|
| 查看次数: |
2382 次 |
| 最近记录: |