2014-10-20 2 views
0

내 단위 테스트가 C#으로 계속 실패하고 몇 가지 다른 방법을 시도했습니다. 어떤 도움이라도 대단히 감사하겠습니다. 내가 추가 한 책을 소문자로 변환하지 않습니다. 그래서 테스트는 testmethod 그렇게해야하지C에서 문자열 목록을 소문자로 변환 할 때 단위 테스트가 실패했습니다 #

private List<string> _number; 

    public Book (string[] id) 
    { 
     //_number = idents.Select (d => d.ToLower()).ToList(); 

     _number = new List<string>(id); 
     _number = _number.ConvertAll (d => d.ToLower()); 
    } 

    public bool Exist (string id) 
    { 
     return _number.Contains (id); 
    } 

    public void AddBook (string id) 
    { 
     _number.Add (id.ToLower()); 
    } 
    _______________________________________________________________________________ 

    [Test()] 
    public void TestAddBook() 
    { 
     Book id = new Book (new string[] {"ABC", "DEF"}); 
     id.AddBook ("GHI"); 

     Assert.AreEqual (true, id.Exist ("ghi")); 
    } 
+0

AddIdentifier에서 소문자로 변환 하시겠습니까? – artm

+0

이것이 왜 투표에 실패했는지, 합법적 인 질문처럼 보일지 확실하지 않습니다. –

+0

'_name' 변수와'AreYou' 메쏘드는 어디에 선언되어 있습니까? – TheVillageIdiot

답변

1

실패 :

[TestMethod] 
public void TestAddBook() 
{ 
    Book id = new Book (new string[] {"ABC", "DEF"}); 
    id.AddBook ("GHI"); 

    Assert.AreEqual (true, id.Exist ("ghi")); 
} 

이 적어도 무엇을 내 psycic 크리스탈 볼의 감각이다.

+0

하지만 OP가 자신의 사용자 정의 테스팅 프레임 워크를 사용하고있을 수 있습니다 :) – TheVillageIdiot

+0

다른 훌륭한 정보는 그가 선적 된 표준 테스팅 프레임 워크를 사용하지 않는다고 언급 할 가치가 있습니다 –

1

이 문제를 해결하는 더 좋은 방법은 실제로 키를 소문자로 변환하는 것이 아니라 키를 대/소문자를 구분하지 않고 저장할 수있는 구조를 사용하는 것입니다. 이렇게하면 처리 시간을 줄이고 프로그래밍 오류를 줄일 수 있습니다.

저장에 관심이있는 모든 사용자가 책 키인 경우 HashSet을 대신 사용하시기 바랍니다.

목록의 Contains method is O(n)Hashset's is O(1)입니다. 많은 항목이있는 경우 이것은 중요한 차이입니다. 여기

가 HashSet의를 사용하여 예약 클래스의 재 작성이 개정 된 클래스와

public class Book 
{ 
    private HashSet<string> _number; 

    public Book(string[] id) 
    { 
     _number = new HashSet<string>(id, StringComparer.InvariantCultureIgnoreCase); 
    } 

    public bool Exist(string id) 
    { 
     return _number.Contains(id); 
    } 

    public void AddBook(string id) 
    { 
     _number.Add(id); 
    } 
} 

, 당신은 당신의 시험 방법을 변경할 필요가 없습니다.

관련 문제