1

하나의 단위 테스트를 시작할 때 이런 오류가 있습니다. 테스트 메서드 TestName 예외가 throw되었습니다. System.IO.FileNotFoundException : 파일 또는 어셈블리 'Assembly.dll을로드 할 수 없습니다. '또는 그 의존성 중 하나. 지정한 모듈을 찾을 수 없습니다. vstest.console.exe를 사용하는 경우파일 또는 어셈블리 'Assembly.dll'을로드 할 수 없습니다. - vstest

이 문제가 발생합니다. Visual Studio (2013)를 통해 테스트를 실행할 때 발생하지 않습니다. Visual Studio를 통해 테스트를 실행할 때 vstest.executionengine.exe가 실행된다는 것을 알고 있습니다. 이 파일에 대한 로그는 vstest.executionengine.exe.config 파일에서 사용할 수 있습니다 (그러나 유용한 정보는 제공하지 않습니다).

는 이미 이러한 유형의 다른 많은 질문에 제안 종속성 워커를 사용 : Dependency Walker screenshot 그리고 내가 System32 디렉터리 또는 프로그램 실행 디렉토리에 빨간색으로 색깔의 모든 DLL을 가지고 볼 (종속성 워커가 누락 생각). 테스트 실행은 다음과 같습니다 :

"Visual Studio 12.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ vstest.console.exe" "dll1.dll" "dll2 : \ Program Files (x86) \ Microsoft. (테스트 모든 DLL을위한 등) DLL "/ InIsolation/UseVsixExtensions : 거짓/플랫폼 : 86/프레임 워크 : framework40/로거 : TRX/테스트 : TESTNAME (가능한 모든 누락 된 DLL을,뿐만 아니라 API-MS-WIN (. ..)라는 DLL은 TestWindow 또는 System32 디렉터리에 있습니다. 이미 확인했습니다. Microsoft Visual C++ Redistributable 2008, 2010, 2012 및 2013이 x86 및 x64 버전에 모두 설치되어 있습니다. 누락 된 dll 이름과 테스트 이름이 변경되었지만 물론 다른 이름을 가지고 있습니다. :)

+0

[어셈블리 바인딩 로깅] (https://msdn.microsoft.com/library/e74a18c4)을 사용해 보셨습니까? 'vstest.console.exe'가 같은 위치에서 시작하고 그 환경에서 같은'PATH'를 사용하고 있는지 확인하십시오. Process Explorer를 사용하여 성공적인'vstest.executionengine.exe'의 명령 행/환경을 캡쳐 할 수 있습니다. –

+0

죄송합니다 나는 너무 늦게 대답했습니다. Jeroen Mostert :) PATH 변수는 내가 사용했던 두 가지 환경에서 또 다른 변수였습니다. 하나의 디렉토리가 PATH에 없기 때문에 해당 DLL을 찾을 수 없습니다. 나는 목요일에 이것에 대해 알았지 만 나는 그 때 그 해답을 게시하지 않았다. – Zygmuntix

답변

0

조사한 후 : PATH 변수는 내가 사용했던 두 가지 환경에서 또 다른 변수였습니다. 하나의 디렉토리가 PATH 환경 변수에 없기 때문에 해당 DLL을 찾을 수 없습니다. PATH 변수에이 키 디렉토리를 추가하면 문제가 해결됩니다. 불완전한 PATH 변수가있는 환경은 Jenkins였다.

관련 문제