2014-12-03 2 views
3

testsettings 파일을 사용하여 OUT 폴더에 참조 된 일부 DLL을 배포하는 단위 테스트를 작성했습니다. 이 명령을 사용하여 유닛 테스트를 실행합니다. 내 단위 테스트에서Mstest 유닛 테스트가 명령 행에서 실패합니다.

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" 
"/testcontainer:C:\Unittests\unit_test.dll" 
"/runconfig:C:\Unittests\unit_test_settings.testsettings" 
"/resultsfile:C:\Unittests\unit_test_results.trx" 

일부 테스트는 잘 실행하지만 일부는 다음과 같은 오류와 함께 실패합니다.

실패한 개체 초기화 (ISupportInitialize.EndInit). fallback culture "en"에 대해 "some_referenced_dll.resources.dll, PublicKeyToken ="이라는 위성 어셈블리를 찾을 수 없거나로드 할 수 없습니다. 이것은 일반적으로 설치 문제입니다. 응용 프로그램을 재설치하거나 수리 해보십시오.
System.Resources.MissingSatelliteAssemblyException : 명명 된 위성 어셈블리 ...

이 문제를 해결하기위한 시도에서, 나는 testsettings 파일의 배포 항목으로 some_referenced_dll.resouce.dll을 추가하지만 도움이되지 않았다 .

dll이 OUT 폴더에 복사되는 것을 볼 수 있습니다.

또한 프로젝트에 대한 참조로 some_referenced_dll.dll을 추가 한 후에도 VS 2012에서 테스트가 잘 실행됩니다.

MORE INFO : 직접에 refrence로 (예를 들어 ref_dll_2.dll) 및 전달이 다른 DLL을 사용하는 시험이 있습니다

. 이 ref_dll_2.dll은 OUT 폴더에도 있습니다.

내 테스트에서 직접 참조하지 않는 dll (some_referenced_dll.resouce.dll) 문제가 있습니다. 내 유닛 테스트는 실패한 클래스를 초기화하려고하는 일부 dev 코드를 호출합니다.

dll을 강제로로드하는 것이 합리적일까요? 그렇게 할 수있는 방법이 있습니까?

답변

2

그래, 결국 문제가 해결되었습니다. 완전을 위해 여기에 문서화하십시오.

문제는 내 MSTEST 단위 테스트에서 리소스/위성 어셈블리 (some_referenced_dll.resources.dll)를 찾을 수 없어 예외가 발생했기 때문입니다. deploymentItem 특성을 사용하여 dll (some_referenced_dll.dll)을 배포했지만 리소스 dll은 배포하지 않았습니다. 해결책은 deploymentItem을 사용하고 리소스 dll (some_referenced_dll.resources.dll)을 배포하는 것이 었습니다.

빌 왕 (Bill Wang)은이 문제를 해결하는 데 도움이 된이 thread에 훌륭한 답을 제공했습니다. 정말 짜증나는 문제에 대한 간단한 수정이었습니다.

관련 문제