2013-05-28 6 views
2

다음을 시도하고 있습니다 : http://msdn.microsoft.com/en-us/library/21a15yht.aspx 예제는 Visual Studio 사용자와 명령 줄 사용자를위한 지침이 혼합되어 있지만 VS 지침 만 따르도록 최선을 다했습니다.간단한 ResourceManager 예제가 단위 테스트 내에서 작동하지 않습니다

그래서 : Example이라는 비주얼 스튜디오에서 새로운 단위 테스트 프로젝트를 만들었습니다.

Greeting.en-US.resx이라는 리소스를 추가하고 HelloString이라는 문자열을 넣었습니다. 이제

using System.Globalization; 
using System.Resources; 
using System.Threading; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 

namespace Example 
{ 
    [TestClass] 
    public class GreetingTests 
    { 
     [TestMethod] 
     public void Hello() 
     { 
      var newCulture = new CultureInfo("en-US"); 
      Thread.CurrentThread.CurrentCulture = newCulture; 
      Thread.CurrentThread.CurrentUICulture = newCulture; 

      var rm = new ResourceManager("Example.Greeting", 
             typeof (GreetingTests).Assembly); 
      Assert.AreEqual("Hello (US)", rm.GetString("HelloString")); 
     } 
    } 
} 

은 오직로드 :

편집 지금 Greeting.resx 캐릭터라는 또 다른 기본 리소스 파일을 추가 한은 "안녕하세요 (기본값)"

enter image description here

내 단위 테스트입니다 기본값

Assert.AreEqual failed. Expected:<Hello (US)>. Actual:<Hello (Default)>.

동일한 코드가 Console App에서도 작동합니다.

+0

리소스 파일 이름은 Greetings (복수)이지만 단 하나의 형태로 리소스를 요청합니다 (인사말). 비록 당신의 코드가 콘솔에서 작동한다는 것에 놀랐지 만. 질문에 오타가있을 수 있습니까? – vlad2135

+0

@ vlad2135 예. 오타, 고마워요. – weston

답변

1

글쎄,이 문제는 기기 테스트 도구 쉐도우가 주 어셈블리를 복사하지만 위성을 복사하지 않기 때문에 발생한다고 생각합니다. Enable shadow copying for satellite assembly 및 단위 테스트를 다시 실행하십시오.

Assembly.GetExecutingAssembly()의 추정치 확인 값을 확인하려면 .Codebase에 대한 위치.

+0

아, 섀도우 어셈블리가 생성 된 것을 발견하지 못했습니다. – weston

+0

내 대답이 문제를 해결했다면 대답을 수락하십시오. – vlad2135