2011-09-07 8 views
7

TeamCity NUnit 빌더를 사용하여 .DLL 파일에 저장된 테스트를 실행하고 있습니다.TeamCity에서 NUnit 테스트를 실행할 때 FileNotFoundException이 발생했습니다.

내 .DLL은 동일한 폴더에있는 다른 DLL을 참조합니다.

이들을 실행할 때 참조 된 DLL에 대해 FileNotFoundException이 발생합니다.

어떻게 해결할 수 있습니까? 아마도 TC NUnit 러너가 메인 애플리케이션 실행 폴더로 다른 dir을 사용하고 있기 때문에 테스트 DLL 옆에 실제로로드되어있는 파일로부터 보호 할 수는 있지만 아직이 주장을 증명할 수는 없다고 생각합니다.

누구든지이 동작이 발생 했습니까?

답변

9

OK 연락 주시기 먹이고 그것은 참으로 어리석은 당황 : 나는에 NUnit과 테스트 러너를 설정 한

이 시험을 실행

**/*.Tests.dll 

이 그 예 obj/

,174 다른 폴더로부터 또 /bin/Debug/에서 테스트와를 포함한다는 것을 의미

이러한 폴더에는 물론 참조가 포함되어 있지 않으므로 같은 테스트가 두 번 실행되고 일부는 물론 실패합니다!

1

경로는 빌드 체크 아웃 디렉토리와 관련이 있으며 작업 디렉토리에는 관련이 없습니다. 다른 경로가 필요한 경우 %reference% 구문을 사용하여 디렉토리 경로가있는 TeamCity 속성을 참조하십시오. Windows에서 실행합니까? TeamCity 6.5를 사용하십니까? 이 방법으로 문제가 해결되지 않으면

는 문제가 해결 [email protected]

+0

현재 6.5, Windows, 예를 사용하고 있습니다. 나는 경로가 상대적이라는 것을 안다. 그것은 이것이 실패한 이유를 이해하려고 노력하는 논리적 인 설명 일 뿐이다. Dll A가 Dll B를 참조한다면 (둘 다 같은 dir에서), Dll B를 찾지 못한 이유는 무엇입니까? –

0

필자의 경우 누락 된 DLL은 네이티브 라이브러리이며 빌드 에이전트에 설치된 VC 런타임의 잘못된 버전이 있기 때문에로드 할 수 없습니다. 내 솔루션은 런타임 C : \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ VC \ redist \ x86 \ Microsoft.VC110.CRT '에있는 DLL을 프로젝트에 직접 추가하는 것입니다. output directory = 항상 복사). 이것은 또한 설치를 더 우호적 인 것으로 만듭니다.

희망이 도움이됩니다.

관련 문제