2010-06-28 4 views
1

작동하지 않습니다는 오늘 발견되는 버그를 설명하는 유닛 테스트에 실패입니다 :out 매개 변수 이유는 다음

이 테스트가 적색에서 녹색으로 갈 수 있도록하는 방법이다
[TestMethod] 
    public void WFT() 
    { 
     string configDebug = "false"; 
     bool configDebugEnabled = bool.TryParse(configDebug, out configDebugEnabled); 

     Assert.AreEqual(false, configDebugEnabled); 
    } 

:

[TestMethod] 
    public void WFT() 
    { 
     string configDebug = "false"; 
     bool configDebugEnabled; 
     bool.TryParse(configDebug, out configDebugEnabled); 

     Assert.AreEqual(true, configDebugEnabled); 
    } 

나는 C# 명세에서 이것을 설명하는 단락을 찾을 수 없었지만,이 행동에 대해 가장 적절한 설명이있을 것이다. 아무도 왜 첫 번째 테스트가 실패하는지 설명 할 수 있습니까?

+0

솔직히 말해서, 나는 당신의 혼란을 이해하지 못합니다. 당신이 * 왜 * 당신이 값'false'를 기대했는지 설명한다면 도움이 될 것입니다. 'TryParse'가 반환하는 것을 알고 있습니까? –

+0

하하 - 너무 오랫동안 무엇인가 쳐다볼 때 결국 장님이 될 것입니다 : o) TryParse가 작동하는 방법을 알고 있지만 그 이유는 혼란 스럽습니다 ... 여름 휴가 만 하루 멀리 - 나는 잠시 동안 절실히 필요하다고 생각한다. – kerbou

답변

5

구문 분석이 성공하면 메서드는 항상 true을 반환하고 그렇지 않으면 false을 반환하기 때문에. 첫 번째 경우에는 구문 분석이 성공하므로 configDebugEnabled = true은 사용자가 주장하는 것이 아닙니다.

Btw string configDebug = "true"을 쓰지 않으면 두 번째 테스트도 실패합니다.

2

그 이유는 동일한 변수를 사용하여 의 성공 또는 실패 (TryParse)을 저장하는 것입니다. 구문 분석이 성공하면 (문자열이 부울 값으로 변환 됨) false의 반환 값을 true으로 덮어 쓰게됩니다.

0

왜 out 매개 변수가 true을 반환 할 것으로 기대합니까?

1

bool.TryParse의 return 매개 변수가 변환을 수행 할 수 있었는지 여부를 "true"로 지정했기 때문에 반환 매개 변수가 변환 결과가 아닙니다.

bool.TryParse() 자체의 결과로 out 매개 변수의 결과를 덮어 쓰고 있습니다.

0

bool.TryParse는 구문 분석에 성공했는지 여부를 지정하는 bool을 반환합니다. 그 결과를 out 매개 변수에 넣는 것과 동일한 bool 변수에 지정합니다.

함수의 성공 여부를 테스트하려면 별도의 변수가 필요합니다.

0

변수 configDebugEnabled을 반환 값과 출력 매개 변수에서 할당합니다. 변수가 끝에 거짓이면 구문 분석이 실패했는지 또는 구문 분석 된 값이 거짓인지를 알 수 없습니다. (해석의 결과로서)

bool configDebugEnabled = bool.TryParse(configDebug, out configDebugEnabled); 

가변 configDebugEnabled 먼저 false로 설정되어이 라인

1

하지만 직후 true로 설정되어

은이 방법을 수행 (왜냐하면 TryParse는 구문 분석이 성공하면 true를 반환하기 때문). 왜 그냥 bool을 사용하지 않습니까?

관련 문제