2013-09-10 3 views
2

나는 사용자 지정 제네릭 연결 목록을 작성했으며 다양한 방법을 테스트하려고했습니다. 예를 들어 내가 포함 된 메서드가단위 테스트 일반 메서드

public bool Contains(T item) 
    { 
     lock (this) 
     { 
      Node<T> currentNode = firstNode; 
      while (currentNode != null) 
      { 
       if (currentNode.Item != null) 
       { 
        if (currentNode.Item.Equals(item)) 
        { 
         return true; 
        } 
       } 
       currentNode = currentNode.Next; 
      } 
      return false; 
     } 
    } 

이 스텁을 생성하는 단위 테스트를 생성하는 데 MSTest를 사용했습니다. TODO 줄에 무엇을 넣어야하는지 잘 모르겠습니까?

public void AddTestHelper<T>() 
    { 
     LinkedList<T> target = new LinkedList<T>(); // TODO: Initialize to an appropriate value 
     T item = default(T); // TODO: Initialize to an appropriate value 
     target.Add(item); 
     Assert.AreEqual(target.Contains(item), true); 
    } 

    [TestMethod()] 
    public void AddTest() 
    { 
     AddTestHelper<int>(); // my lines 
     AddTestHelper<object>(); //my lines 
    } 

그러나 AddTestHelper 또는 AddTestHelper 기본 (T)로 실패하는하는 메소드가 false를 반환하고 테스트가 실패()이 들어 널 (null) 제공합니다.

저는 단위 테스트를 처음 접했고 이와 같은 일반적인 방법을 테스트하는 방법을 모릅니다. 누군가가 TODO 라인에서 특별히 Test 메서드에서 필요한 변경 사항을 알 수 있습니까?

감사

+2

컴파일하지 않는 테스트 메소드는 단위화할 수 없습니다. –

+0

내 연결된 목록의 모든 코드가 컴파일됩니다. –

답변

3

변경 때문에 코드에서 인스턴스를 사용

public void AddTestHelper<T>(T item) 
    { 
    LinkedList<T> target = new LinkedList<T>();  
    target.Add(item); 
    Assert.AreEqual(target.Contains(item), true); 
    } 

아래와 같이 제네릭 형식 인스턴스 값을 취할 수있는 방법 대신

그래서 당신의 검사 결과에 유 할 수

AddTestHelper<int>(12);  

AddTestHelper<string>("Test"); 
+0

정확히 TODO 줄에 무엇이 있습니까? T item = default (T); 할 수 있습니까 –

+0

코드를 업데이트했습니다 @hitesh –

+0

이것은 우수했습니다. –

관련 문제