2010-01-14 2 views
2

단위 테스트 실행 중에 날짜를 파싱하는 데 문제가 있습니다. 재현 할 수 없습니다. 더 재미있는 결과를 얻으려면 테스트가 연속 통합 프로세스에 의해 실행되지만 Visual Studio 내에서 실행될 때 실패하고 서로 다른 사용자와 동일한 시스템에서 실행됩니다.C#에서이 DateTime 구문 분석에 실패하면 테스트 할 수 있습니까?

내가 실패를 기대하는 이유는 내가의 국가 별 설정해야한다는 것입니다 (일/월/년 이탈리아어 간단한 날짜 형식입니다)

[Test] 
public void Test() 
{ 
    DateTime.Parse("21/12/2009", CultureInfo.CreateSpecificCulture("it-IT")); 
} 

: 여기

테스트입니다 기계가 이탈리아 문화에 대한 간단한 날짜 패턴이 dd/MM/yy가되도록 수정되었지만, 필자가 수동으로 실행할 때, 구문 분석 할 수있을 정도로 정확하거나 똑똑하지 않은 것처럼 보입니다. .

테스트를 실패하는 방법에 대한 아이디어가 있으십니까?

+0

기기의 IT 환경 설정을 어떻게 변경 했습니까? – mlsteeves

+0

제어판을 통해 – Simone

답변

2

CultureInfo 객체를 사용하는 경우에도 DateTime.Parse는 예외를 throw하는 것을 피하기 위해 여러 패턴에 대해 문자열을 시도합니다. 악마가 자세히 설명되어 있습니다. DateTime.Parse의 설명서를 자세히 살펴보아야합니다.

"어쨌든 구문 분석하기에 충분히 똑똑한"것은 아마도 일어나는 일일 것입니다. ParseExact을 사용하고 형식 문자열을 명시 적으로 제공하여 실패하게해야합니다.

1

그래서 ... 내가 틀렸지 만 사용자 당 로케일 설정이 맞지 않으면 수정하십시오.

http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo_members.aspx

: 당신이 테스트가 일치해야 사용자 모두 ...

확인에 대한 설정을 수정한다면, 여기에 DOCO이며, 두 사용자의 날짜 패턴이 무엇인지 프레임 워크가 생각 밖으로 인쇄하려고

시도 CultureInfo.DateTimeFormatInfo.ShortDatePattern, 그게 dd/mm/yy(yy) 인 것 같습니다.

+0

아마도 그럴 것입니다. 그렇다면이 경우에 CI에서 성공할 것으로 기대됩니다. 해당 사용자는 손길이 닿지 않은 이탈리아 문화를 가지며 명시 적 문화를 사용하는 구문 분석이 성공해야하기 때문에 실행하십시오. – Simone

+0

그게 내가 한거야. 내가 찾은 것을 다시보고 할 것입니다. 나는 아직도 실패 이유를 모르겠다. – Simone

1

테스트를 사용자 프로필 기반 서버 설정에 의존하지 마십시오. 대신 다음 방법을 시도해보십시오.

DateTime.ParseExact("21/12/2009", "d'/'M'/'yy", CultureInfo.InvariantCulture); 
관련 문제