2010-04-21 4 views
5

이상한 문제가 발생했습니다. 유닛 테스트에서 지역화 된 문자열을 확인하고 싶습니다. 그러나, 나는 그것을 얻는 것처럼 보일 수 없다. 예를 들어 영어 용 Resource1.resx와 중국어 용 Resource1.zh-CN.resx라는 두 가지 리소스를 만들었습니다. 단위 테스트 프로젝트는 영어 리소스 문자열 (기본값?) 만 가져올 수 있습니다. MSTest 프로젝트에서 지역화 된 문자열을 가져올 수 없습니까?

ResourceManager actual = new ResourceManager(typeof(LocaleTest.Properties.Resource1)); 
string name0 = actual.GetString("Name", new CultureInfo("en-US")); 
string name1 = actual.GetString("Name", new CultureInfo("zh-CN")); 

내가 다른 일반 프로젝트를 생성 지역화 된 문자열이 작동하는지 확인하기 위해 (안 MSTEST 프로젝트를 의미) : 이것은 내가 사용하고 코드입니다. 따라서 일반 프로젝트에서는 작동하지만 MSTest 프로젝트에서는 작동하지 않습니다.

그것은 내가 단위 테스트의 현재 문화 '에서 zh-CN'를 만들기 위해 다음 코드를 삽입하는 경우에도 도움이되지 않았다

:

[TestInitialize()] 
public void MyTestInitialize() 
{ 
    Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN"); 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN"); 
} 

누구 보았다 유사한 문제? 해결 방법이 있습니까?

답변

10

현지화 DLL이 테스트 폴더에 있는지 확인하기 위해 DeploymentItem을 사용할 필요가 없습니까?

[TestMethod()] 
[DeploymentItem(@"bin\Debug\fr\Proj.resources.dll", "fr-CA")] 
public void TestDialogLocalization(){ 
// blah 
} 
+0

오, 훌륭합니다. 그것은 치료법입니다! 백만 달러 주셔서 감사합니다! 흥미 롭습니다 ... resources.dll은 이미 프로젝트 디렉토리에 복사되었습니다. 이 속성을 추가해도 타임 스탬프의 파일은 다시 복사되지 않습니다. 그러나이 특성이 없으면 작동하지 않습니다. – miliu

+0

hahah는 mstest lol의 광기에 또 하나의 분필을 내었다 –

+0

멋진 잡기. 나는 이것을 내 테스트 메소드의 최상단에 올려 놓고 나의 파일 복사를 온전하게 검사하기 위해'[DeploymentItem]'을 넣고 싶다 :'Assert.IsTrue (File.Exists (@ "nl \ Project.resources.dll"), "File not found "); ' – tomfanning

관련 문제