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

첫 번째 질문은 다음과 같습니다. 왜이 방법을 써야합니까? 나 한테 뭐하는거야?

메소드에 더 친숙한 이름을 지정하십시오. 볼 수 있듯이이 메서드는 정수, 문자열 및 해시 테이블을 사용합니다. 이 방법은 다음

  • 첫 번째 행 { "내 열 {ColumnNo}"..}를 ​​
  • 번째 행은 어떤의 포함과 같은 값을 포함하는, 3 열이 단독의 테이블을 포함하는 데이터 세트를 반환하는 예상 [intParam.ToString() stringParam는 해시 테이블 [ "testKey은"]

시험이 방법은 사소한한다 시험 # 1

  1. 정렬 : 공지의 입력을 (정수의 I 만들기 문자열 S, 일부 "testData"=> Y)가 포함 된 해시 테이블
  2. 행위 : 메서드를 호출하고 결과 데이터 집합을 가져옵니다.
  3. 어설 션 : 데이터 집합에 쿼리를 두 개로 구성된 단일 테이블이 있는지 확인합니다. 표의 레코드 내용을 검토하여 헤더 행과 [I, S, Y]가있는 행이 들어 있는지 확인하십시오.

테스트 # 2 : 위의 테스트와 비슷하지만, 해시 테이블 매개 변수에 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"]) 
} 

나는 당신을 속도를 목록 here에서 NUnit과 또는 하나 C#에서 실용 단위 테스트와 같은 좋은 책을 점점 권하고 싶습니다.

+0

해시 테이블의 값을 전달할 수있는 방법을 알아야합니다. 또한 HashTable 용 테스트 픽스처 코드를 작성하여 Nunit에서 테스트 할 수 있는지 알아야합니다. – Arunachalam

+0

위의 게시물은 내 친구에 의해 보내 졌으므로 나는 그 대신에 대답했습니다. – Arunachalam

+0

Hashtable에 대한 테스트 픽스처 코드 란 무엇입니까? 나는 당신이 해시 테이블 기능을 테스트하려고하지 않았 으면 좋겠다. 조금 더 ... 나는 단절감을 느낍니다. – Gishu

관련 문제