2009-04-07 4 views
0

Как написать код для метода ниже, чтобы его можно было протестировать в NUnit? Как обращаться с Hashtable?Написание тестового кода NUnit

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; 
} 
+0

Что это за метод * do *? Должны ли мы писать тест для метода MySampleMethod, который делает некоторые неуказанные вещи для переменных, названных в честь их типов? – Ken

+0

Мне просто нужно знать, как мы можем передавать значения для хэш-таблицы. и мне также нужно знать, как вы напишете тестовый код устройства для HashTable, чтобы он мог быть протестирован в Nunit.? – Arunachalam

+0

вышеупомянутое сообщение отправлено моим другом, поэтому я ответил от его имени – Arunachalam

ответ

9

Первый вопрос: спросите: зачем мне этот метод? Что это для меня делает?

Дайте методу более удобное для человека имя. Из того, что я вижу, метод принимает целое число, строку и хэш-таблицу. Метод затем, как ожидается, возвращает набор данных, содержащий одиночную таблицу с 3-мя колоннами,

  • первая строка содержит значения, как { «Моя колонка {ColumnNo}» ..}
  • вторая строка которой содержит [intParam.ToString(), stringParam, хеш [ "TestKey"]]

Тестирование этот метод должен быть тривиальным, Тест # 1:

  1. Упорядочить: Создание известных входах (в INT I, строка S, хэш-таблица с некоторыми «testData» => Y)
  2. Акт: вызов метода и получение полученного набора данных
  3. Утверждение: запросите набор данных, чтобы увидеть, имеет ли он одну таблицу с 2 записями. Проверьте содержимое записей таблицы, чтобы увидеть, содержат ли они строку заголовка и строку с [I, S, Y].

Тест № 2: Как и в предыдущем тесте, за исключением того, что вы передаете значение null для параметра hashtable.

Это все, что я мог видеть на основе фрагмента, который вы опубликовали. НТН

Update: Не уверен, что вы имеете в виду здесь «ручка Хеша» или «написать тестовый код арматуры для Хеш»? Хэш-таблица - это просто параметр вашей функции. Поэтому я считаю, что тест будет выглядеть примерно так (простить плохое имя и отсутствие констант ... не могу назвать их, если я не знаю, для чего эта функция используется в реальной жизни)

[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"]) 
} 

Я рекомендовал бы получить хорошую книгу, как прагматический модульное тестирование в C# с NUnit или один из списка here ускорить вас здесь.

+0

Мне просто нужно знать, как мы могли бы передавать значения для хэш-таблицы. и мне также нужно знать, как вы напишете тестовый код устройства для HashTable, чтобы он мог быть протестирован в Nunit.? – Arunachalam

+0

вышеупомянутое сообщение отправлено моим другом, поэтому я ответил от его имени – Arunachalam

+0

Что вы подразумеваете под кодом test для Hashtable .. Я надеюсь, вы не пытаетесь проверить функциональность хеш-таблицы .. не могли бы вы объяснить свою проблему? бит больше ... Я чувствую разрыв. – Gishu

Смежные вопросы